! function(e, n) {
  "object" == typeof exports && "object" == typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define([], n) : "object" == typeof exports ? exports.Ctibar = n() : e.Ctibar = n()
}(self, (function() {
  return e = {
          187: e => {
              "use strict";
              var n, t = "object" == typeof Reflect ? Reflect : null,
                  l = t && "function" == typeof t.apply ? t.apply : function(e, n, t) {
                      return Function.prototype.apply.call(e, n, t)
                  };
              n = t && "function" == typeof t.ownKeys ? t.ownKeys : Object.getOwnPropertySymbols ? function(e) {
                  return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))
              } : function(e) {
                  return Object.getOwnPropertyNames(e)
              };
              var r = Number.isNaN || function(e) {
                  return e != e
              };

              function u() {
                  u.init.call(this)
              }
              e.exports = u, e.exports.once = function(e, n) {
                  return new Promise((function(t, l) {
                      function r(t) {
                          e.removeListener(n, u), l(t)
                      }

                      function u() {
                          "function" == typeof e.removeListener && e.removeListener("error", r), t([].slice.call(arguments))
                      }
                      p(e, n, u, {
                          once: !0
                      }), "error" !== n && function(e, n, t) {
                          "function" == typeof e.on && p(e, "error", n, {
                              once: !0
                          })
                      }(e, r)
                  }))
              }, u.EventEmitter = u, u.prototype._events = void 0, u.prototype._eventsCount = 0, u.prototype._maxListeners = void 0;
              var s = 10;

              function o(e) {
                  if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e)
              }

              function i(e) {
                  return void 0 === e._maxListeners ? u.defaultMaxListeners : e._maxListeners
              }

              function a(e, n, t, l) {
                  var r, u, s, a;
                  if (o(t), void 0 === (u = e._events) ? (u = e._events = Object.create(null), e._eventsCount = 0) : (void 0 !== u.newListener && (e.emit("newListener", n, t.listener ? t.listener : t), u = e._events), s = u[n]), void 0 === s) s = u[n] = t, ++e._eventsCount;
                  else if ("function" == typeof s ? s = u[n] = l ? [t, s] : [s, t] : l ? s.unshift(t) : s.push(t), (r = i(e)) > 0 && s.length > r && !s.warned) {
                      s.warned = !0;
                      var c = new Error("Possible EventEmitter memory leak detected. " + s.length + " " + String(n) + " listeners added. Use emitter.setMaxListeners() to increase limit");
                      c.name = "MaxListenersExceededWarning", c.emitter = e, c.type = n, c.count = s.length, a = c, console && console.warn && console.warn(a)
                  }
                  return e
              }

              function c() {
                  if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = !0, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments)
              }

              function h(e, n, t) {
                  var l = {
                          fired: !1,
                          wrapFn: void 0,
                          target: e,
                          type: n,
                          listener: t
                      },
                      r = c.bind(l);
                  return r.listener = t, l.wrapFn = r, r
              }

              function d(e, n, t) {
                  var l = e._events;
                  if (void 0 === l) return [];
                  var r = l[n];
                  return void 0 === r ? [] : "function" == typeof r ? t ? [r.listener || r] : [r] : t ? function(e) {
                      for (var n = new Array(e.length), t = 0; t < n.length; ++t) n[t] = e[t].listener || e[t];
                      return n
                  }(r) : _(r, r.length)
              }

              function f(e) {
                  var n = this._events;
                  if (void 0 !== n) {
                      var t = n[e];
                      if ("function" == typeof t) return 1;
                      if (void 0 !== t) return t.length
                  }
                  return 0
              }

              function _(e, n) {
                  for (var t = new Array(n), l = 0; l < n; ++l) t[l] = e[l];
                  return t
              }

              function p(e, n, t, l) {
                  if ("function" == typeof e.on) l.once ? e.once(n, t) : e.on(n, t);
                  else {
                      if ("function" != typeof e.addEventListener) throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e);
                      e.addEventListener(n, (function r(u) {
                          l.once && e.removeEventListener(n, r), t(u)
                      }))
                  }
              }
              Object.defineProperty(u, "defaultMaxListeners", {
                  enumerable: !0,
                  get: function() {
                      return s
                  },
                  set: function(e) {
                      if ("number" != typeof e || e < 0 || r(e)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e + ".");
                      s = e
                  }
              }), u.init = function() {
                  void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0
              }, u.prototype.setMaxListeners = function(e) {
                  if ("number" != typeof e || e < 0 || r(e)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e + ".");
                  return this._maxListeners = e, this
              }, u.prototype.getMaxListeners = function() {
                  return i(this)
              }, u.prototype.emit = function(e) {
                  for (var n = [], t = 1; t < arguments.length; t++) n.push(arguments[t]);
                  var r = "error" === e,
                      u = this._events;
                  if (void 0 !== u) r = r && void 0 === u.error;
                  else if (!r) return !1;
                  if (r) {
                      var s;
                      if (n.length > 0 && (s = n[0]), s instanceof Error) throw s;
                      var o = new Error("Unhandled error." + (s ? " (" + s.message + ")" : ""));
                      throw o.context = s, o
                  }
                  var i = u[e];
                  if (void 0 === i) return !1;
                  if ("function" == typeof i) l(i, this, n);
                  else {
                      var a = i.length,
                          c = _(i, a);
                      for (t = 0; t < a; ++t) l(c[t], this, n)
                  }
                  return !0
              }, u.prototype.addListener = function(e, n) {
                  return a(this, e, n, !1)
              }, u.prototype.on = u.prototype.addListener, u.prototype.prependListener = function(e, n) {
                  return a(this, e, n, !0)
              }, u.prototype.once = function(e, n) {
                  return o(n), this.on(e, h(this, e, n)), this
              }, u.prototype.prependOnceListener = function(e, n) {
                  return o(n), this.prependListener(e, h(this, e, n)), this
              }, u.prototype.removeListener = function(e, n) {
                  var t, l, r, u, s;
                  if (o(n), void 0 === (l = this._events)) return this;
                  if (void 0 === (t = l[e])) return this;
                  if (t === n || t.listener === n) 0 == --this._eventsCount ? this._events = Object.create(null) : (delete l[e], l.removeListener && this.emit("removeListener", e, t.listener || n));
                  else if ("function" != typeof t) {
                      for (r = -1, u = t.length - 1; u >= 0; u--)
                          if (t[u] === n || t[u].listener === n) {
                              s = t[u].listener, r = u;
                              break
                          } if (r < 0) return this;
                      0 === r ? t.shift() : function(e, n) {
                          for (; n + 1 < e.length; n++) e[n] = e[n + 1];
                          e.pop()
                      }(t, r), 1 === t.length && (l[e] = t[0]), void 0 !== l.removeListener && this.emit("removeListener", e, s || n)
                  }
                  return this
              }, u.prototype.off = u.prototype.removeListener, u.prototype.removeAllListeners = function(e) {
                  var n, t, l;
                  if (void 0 === (t = this._events)) return this;
                  if (void 0 === t.removeListener) return 0 === arguments.length ? (this._events = Object.create(null), this._eventsCount = 0) : void 0 !== t[e] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete t[e]), this;
                  if (0 === arguments.length) {
                      var r, u = Object.keys(t);
                      for (l = 0; l < u.length; ++l) "removeListener" !== (r = u[l]) && this.removeAllListeners(r);
                      return this.removeAllListeners("removeListener"), this._events = Object.create(null), this._eventsCount = 0, this
                  }
                  if ("function" == typeof(n = t[e])) this.removeListener(e, n);
                  else if (void 0 !== n)
                      for (l = n.length - 1; l >= 0; l--) this.removeListener(e, n[l]);
                  return this
              }, u.prototype.listeners = function(e) {
                  return d(this, e, !0)
              }, u.prototype.rawListeners = function(e) {
                  return d(this, e, !1)
              }, u.listenerCount = function(e, n) {
                  return "function" == typeof e.listenerCount ? e.listenerCount(n) : f.call(e, n)
              }, u.prototype.listenerCount = f, u.prototype.eventNames = function() {
                  return this._eventsCount > 0 ? n(this._events) : []
              }
          },
          830: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  (null == n || n > e.length) && (n = e.length);
                  for (var t = 0, l = new Array(n); t < n; t++) l[t] = e[t];
                  return l
              }
              var r = t(424),
                  u = t(965),
                  s = t(790),
                  o = t(987),
                  i = t(351),
                  a = t(63);
              n.settings = {
                  authorization_user: null,
                  password: null,
                  realm: null,
                  ha1: null,
                  authorization_jwt: null,
                  display_name: null,
                  uri: null,
                  contact_uri: null,
                  instance_id: null,
                  use_preloaded_route: !1,
                  session_timers: !0,
                  session_timers_refresh_method: u.UPDATE,
                  session_timers_force_refresher: !1,
                  no_answer_timeout: 60,
                  register: !0,
                  register_expires: 600,
                  registrar_server: null,
                  sockets: null,
                  connection_recovery_max_interval: u.CONNECTION_RECOVERY_MAX_INTERVAL,
                  connection_recovery_min_interval: u.CONNECTION_RECOVERY_MIN_INTERVAL,
                  via_host: "".concat(r.createRandomToken(12), ".invalid")
              };
              var c = {
                  mandatory: {
                      sockets: function(e) {
                          var n = [];
                          if (i.isSocket(e)) n.push({
                              socket: e
                          });
                          else {
                              if (!Array.isArray(e) || !e.length) return;
                              var t, r = function(e, n) {
                                  var t;
                                  if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                                      if (Array.isArray(e) || (t = function(e, n) {
                                              if (e) {
                                                  if ("string" == typeof e) return l(e, n);
                                                  var t = Object.prototype.toString.call(e).slice(8, -1);
                                                  return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? l(e, n) : void 0
                                              }
                                          }(e)) || n && e && "number" == typeof e.length) {
                                          t && (e = t);
                                          var r = 0,
                                              u = function() {};
                                          return {
                                              s: u,
                                              n: function() {
                                                  return r >= e.length ? {
                                                      done: !0
                                                  } : {
                                                      done: !1,
                                                      value: e[r++]
                                                  }
                                              },
                                              e: function(e) {
                                                  throw e
                                              },
                                              f: u
                                          }
                                      }
                                      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                                  }
                                  var s, o = !0,
                                      i = !1;
                                  return {
                                      s: function() {
                                          t = e[Symbol.iterator]()
                                      },
                                      n: function() {
                                          var e = t.next();
                                          return o = e.done, e
                                      },
                                      e: function(e) {
                                          i = !0, s = e
                                      },
                                      f: function() {
                                          try {
                                              o || null == t.return || t.return()
                                          } finally {
                                              if (i) throw s
                                          }
                                      }
                                  }
                              }(e);
                              try {
                                  for (r.s(); !(t = r.n()).done;) {
                                      var u = t.value;
                                      Object.prototype.hasOwnProperty.call(u, "socket") && i.isSocket(u.socket) ? n.push(u) : i.isSocket(u) && n.push({
                                          socket: u
                                      })
                                  }
                              } catch (e) {
                                  r.e(e)
                              } finally {
                                  r.f()
                              }
                          }
                          return n
                      },
                      uri: function(e) {
                          /^sip:/i.test(e) || (e = "".concat(u.SIP, ":").concat(e));
                          var n = o.parse(e);
                          return n && n.user ? n : void 0
                      }
                  },
                  optional: {
                      authorization_user: function(e) {
                          return -1 === s.parse('"'.concat(e, '"'), "quoted_string") ? void 0 : e
                      },
                      authorization_jwt: function(e) {
                          if ("string" == typeof e) return e
                      },
                      user_agent: function(e) {
                          if ("string" == typeof e) return e
                      },
                      connection_recovery_max_interval: function(e) {
                          if (r.isDecimal(e)) {
                              var n = Number(e);
                              if (n > 0) return n
                          }
                      },
                      connection_recovery_min_interval: function(e) {
                          if (r.isDecimal(e)) {
                              var n = Number(e);
                              if (n > 0) return n
                          }
                      },
                      contact_uri: function(e) {
                          if ("string" == typeof e) {
                              var n = s.parse(e, "SIP_URI");
                              if (-1 !== n) return n
                          }
                      },
                      display_name: function(e) {
                          return e
                      },
                      instance_id: function(e) {
                          return /^uuid:/i.test(e) && (e = e.substr(5)), -1 === s.parse(e, "uuid") ? void 0 : e
                      },
                      no_answer_timeout: function(e) {
                          if (r.isDecimal(e)) {
                              var n = Number(e);
                              if (n > 0) return n
                          }
                      },
                      session_timers: function(e) {
                          if ("boolean" == typeof e) return e
                      },
                      session_timers_refresh_method: function(e) {
                          if ("string" == typeof e && ((e = e.toUpperCase()) === u.INVITE || e === u.UPDATE)) return e
                      },
                      session_timers_force_refresher: function(e) {
                          if ("boolean" == typeof e) return e
                      },
                      password: function(e) {
                          return String(e)
                      },
                      realm: function(e) {
                          return String(e)
                      },
                      ha1: function(e) {
                          return String(e)
                      },
                      register: function(e) {
                          if ("boolean" == typeof e) return e
                      },
                      register_expires: function(e) {
                          if (r.isDecimal(e)) {
                              var n = Number(e);
                              if (n > 0) return n
                          }
                      },
                      registrar_server: function(e) {
                          /^sip:/i.test(e) || (e = "".concat(u.SIP, ":").concat(e));
                          var n = o.parse(e);
                          return n ? n.user ? void 0 : n : void 0
                      },
                      use_preloaded_route: function(e) {
                          if ("boolean" == typeof e) return e
                      }
                  }
              };
              n.load = function(e, n) {
                  for (var t in c.mandatory) {
                      if (!n.hasOwnProperty(t)) throw new a.ConfigurationError(t);
                      var l = n[t],
                          u = c.mandatory[t](l);
                      if (void 0 === u) throw new a.ConfigurationError(t, l);
                      e[t] = u
                  }
                  for (var s in c.optional)
                      if (n.hasOwnProperty(s)) {
                          var o = n[s];
                          if (r.isEmpty(o)) continue;
                          var i = c.optional[s](o);
                          if (void 0 === i) throw new a.ConfigurationError(s, o);
                          e[s] = i
                      }
              }
          },
          965: (e, n, t) => {
              "use strict";
              var l = t(403);
              e.exports = {
                  USER_AGENT: "".concat(l.title, " ").concat(l.version),
                  SIP: "sip",
                  SIPS: "sips",
                  causes: {
                      CONNECTION_ERROR: "Connection Error",
                      REQUEST_TIMEOUT: "Request Timeout",
                      SIP_FAILURE_CODE: "SIP Failure Code",
                      INTERNAL_ERROR: "Internal Error",
                      BUSY: "Busy",
                      REJECTED: "Rejected",
                      REDIRECTED: "Redirected",
                      UNAVAILABLE: "Unavailable",
                      NOT_FOUND: "Not Found",
                      ADDRESS_INCOMPLETE: "Address Incomplete",
                      INCOMPATIBLE_SDP: "Incompatible SDP",
                      MISSING_SDP: "Missing SDP",
                      AUTHENTICATION_ERROR: "Authentication Error",
                      BYE: "Terminated",
                      WEBRTC_ERROR: "WebRTC Error",
                      CANCELED: "Canceled",
                      NO_ANSWER: "No Answer",
                      EXPIRES: "Expires",
                      NO_ACK: "No ACK",
                      DIALOG_ERROR: "Dialog Error",
                      USER_DENIED_MEDIA_ACCESS: "User Denied Media Access",
                      BAD_MEDIA_DESCRIPTION: "Bad Media Description",
                      RTP_TIMEOUT: "RTP Timeout"
                  },
                  SIP_ERROR_CAUSES: {
                      REDIRECTED: [300, 301, 302, 305, 380],
                      BUSY: [486, 600],
                      REJECTED: [403, 603],
                      NOT_FOUND: [404, 604],
                      UNAVAILABLE: [480, 410, 408, 430],
                      ADDRESS_INCOMPLETE: [484, 424],
                      INCOMPATIBLE_SDP: [488, 606],
                      AUTHENTICATION_ERROR: [401, 407]
                  },
                  ACK: "ACK",
                  BYE: "BYE",
                  CANCEL: "CANCEL",
                  INFO: "INFO",
                  INVITE: "INVITE",
                  MESSAGE: "MESSAGE",
                  NOTIFY: "NOTIFY",
                  OPTIONS: "OPTIONS",
                  REGISTER: "REGISTER",
                  REFER: "REFER",
                  UPDATE: "UPDATE",
                  SUBSCRIBE: "SUBSCRIBE",
                  DTMF_TRANSPORT: {
                      INFO: "INFO",
                      RFC2833: "RFC2833"
                  },
                  REASON_PHRASE: {
                      100: "Trying",
                      180: "Ringing",
                      181: "Call Is Being Forwarded",
                      182: "Queued",
                      183: "Session Progress",
                      199: "Early Dialog Terminated",
                      200: "OK",
                      202: "Accepted",
                      204: "No Notification",
                      300: "Multiple Choices",
                      301: "Moved Permanently",
                      302: "Moved Temporarily",
                      305: "Use Proxy",
                      380: "Alternative Service",
                      400: "Bad Request",
                      401: "Unauthorized",
                      402: "Payment Required",
                      403: "Forbidden",
                      404: "Not Found",
                      405: "Method Not Allowed",
                      406: "Not Acceptable",
                      407: "Proxy Authentication Required",
                      408: "Request Timeout",
                      410: "Gone",
                      412: "Conditional Request Failed",
                      413: "Request Entity Too Large",
                      414: "Request-URI Too Long",
                      415: "Unsupported Media Type",
                      416: "Unsupported URI Scheme",
                      417: "Unknown Resource-Priority",
                      420: "Bad Extension",
                      421: "Extension Required",
                      422: "Session Interval Too Small",
                      423: "Interval Too Brief",
                      424: "Bad Location Information",
                      428: "Use Identity Header",
                      429: "Provide Referrer Identity",
                      430: "Flow Failed",
                      433: "Anonymity Disallowed",
                      436: "Bad Identity-Info",
                      437: "Unsupported Certificate",
                      438: "Invalid Identity Header",
                      439: "First Hop Lacks Outbound Support",
                      440: "Max-Breadth Exceeded",
                      469: "Bad Info Package",
                      470: "Consent Needed",
                      478: "Unresolvable Destination",
                      480: "Temporarily Unavailable",
                      481: "Call/Transaction Does Not Exist",
                      482: "Loop Detected",
                      483: "Too Many Hops",
                      484: "Address Incomplete",
                      485: "Ambiguous",
                      486: "Busy Here",
                      487: "Request Terminated",
                      488: "Not Acceptable Here",
                      489: "Bad Event",
                      491: "Request Pending",
                      493: "Undecipherable",
                      494: "Security Agreement Required",
                      500: "JsSIP Internal Error",
                      501: "Not Implemented",
                      502: "Bad Gateway",
                      503: "Service Unavailable",
                      504: "Server Time-out",
                      505: "Version Not Supported",
                      513: "Message Too Large",
                      580: "Precondition Failure",
                      600: "Busy Everywhere",
                      603: "Decline",
                      604: "Does Not Exist Anywhere",
                      606: "Not Acceptable"
                  },
                  ALLOWED_METHODS: "INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY",
                  ACCEPTED_BODY_TYPES: "application/sdp, application/dtmf-relay",
                  MAX_FORWARDS: 69,
                  SESSION_EXPIRES: 90,
                  MIN_SESSION_EXPIRES: 60,
                  CONNECTION_RECOVERY_MAX_INTERVAL: 30,
                  CONNECTION_RECOVERY_MIN_INTERVAL: 2
              }
          },
          316: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
              }

              function r(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function u(e, n, t) {
                  return n && r(e.prototype, n), t && r(e, t), e
              }
              var s = t(356),
                  o = t(497),
                  i = t(965),
                  a = t(754),
                  c = t(604),
                  h = t(424),
                  d = new s("Dialog"),
                  f = {
                      STATUS_EARLY: 1,
                      STATUS_CONFIRMED: 2
                  };
              e.exports = function() {
                  function e(n, t, r) {
                      var u = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : f.STATUS_CONFIRMED;
                      if (l(this, e), this._owner = n, this._ua = n._ua, this._uac_pending_reply = !1, this._uas_pending_reply = !1, !t.hasHeader("contact")) return {
                          error: "unable to create a Dialog without Contact header field"
                      };
                      t instanceof o.IncomingResponse && (u = t.status_code < 200 ? f.STATUS_EARLY : f.STATUS_CONFIRMED);
                      var s = t.parseHeader("contact");
                      "UAS" === r ? (this._id = {
                          call_id: t.call_id,
                          local_tag: t.to_tag,
                          remote_tag: t.from_tag,
                          toString: function() {
                              return this.call_id + this.local_tag + this.remote_tag
                          }
                      }, this._state = u, this._remote_seqnum = t.cseq, this._local_uri = t.parseHeader("to").uri, this._remote_uri = t.parseHeader("from").uri, this._remote_target = s.uri, this._route_set = t.getHeaders("record-route"), this._ack_seqnum = this._remote_seqnum) : "UAC" === r && (this._id = {
                          call_id: t.call_id,
                          local_tag: t.from_tag,
                          remote_tag: t.to_tag,
                          toString: function() {
                              return this.call_id + this.local_tag + this.remote_tag
                          }
                      }, this._state = u, this._local_seqnum = t.cseq, this._local_uri = t.parseHeader("from").uri, this._remote_uri = t.parseHeader("to").uri, this._remote_target = s.uri, this._route_set = t.getHeaders("record-route").reverse(), this._ack_seqnum = null), this._ua.newDialog(this), d.debug("new ".concat(r, " dialog created with status ").concat(this._state === f.STATUS_EARLY ? "EARLY" : "CONFIRMED"))
                  }
                  return u(e, null, [{
                      key: "C",
                      get: function() {
                          return f
                      }
                  }]), u(e, [{
                      key: "update",
                      value: function(e, n) {
                          this._state = f.STATUS_CONFIRMED, d.debug("dialog ".concat(this._id.toString(), "  changed to CONFIRMED state")), "UAC" === n && (this._route_set = e.getHeaders("record-route").reverse())
                      }
                  }, {
                      key: "terminate",
                      value: function() {
                          d.debug("dialog ".concat(this._id.toString(), " deleted")), this._ua.destroyDialog(this)
                      }
                  }, {
                      key: "sendRequest",
                      value: function(e) {
                          var n = this,
                              t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                              l = h.cloneArray(t.extraHeaders),
                              r = h.cloneObject(t.eventHandlers),
                              u = t.body || null,
                              s = this._createRequest(e, l, u);
                          r.onAuthenticated = function() {
                              n._local_seqnum += 1
                          };
                          var o = new c(this, s, r);
                          return o.send(), s
                      }
                  }, {
                      key: "receiveRequest",
                      value: function(e) {
                          this._checkInDialogRequest(e) && (e.method === i.ACK && null !== this._ack_seqnum ? this._ack_seqnum = null : e.method === i.INVITE && (this._ack_seqnum = e.cseq), this._owner.receiveRequest(e))
                      }
                  }, {
                      key: "_createRequest",
                      value: function(e, n, t) {
                          n = h.cloneArray(n), this._local_seqnum || (this._local_seqnum = Math.floor(1e4 * Math.random()));
                          var l = e === i.CANCEL || e === i.ACK ? this._local_seqnum : this._local_seqnum += 1;
                          return new o.OutgoingRequest(e, this._remote_target, this._ua, {
                              cseq: l,
                              call_id: this._id.call_id,
                              from_uri: this._local_uri,
                              from_tag: this._id.local_tag,
                              to_uri: this._remote_uri,
                              to_tag: this._id.remote_tag,
                              route_set: this._route_set
                          }, n, t)
                      }
                  }, {
                      key: "_checkInDialogRequest",
                      value: function(e) {
                          var n = this;
                          if (this._remote_seqnum)
                              if (e.cseq < this._remote_seqnum) {
                                  if (e.method !== i.ACK) return e.reply(500), !1;
                                  if (null === this._ack_seqnum || e.cseq !== this._ack_seqnum) return !1
                              } else e.cseq > this._remote_seqnum && (this._remote_seqnum = e.cseq);
                          else this._remote_seqnum = e.cseq;
                          if (e.method === i.INVITE || e.method === i.UPDATE && e.body) {
                              if (!0 === this._uac_pending_reply) e.reply(491);
                              else {
                                  if (!0 === this._uas_pending_reply) {
                                      var t = 1 + (10 * Math.random() | 0);
                                      return e.reply(500, null, ["Retry-After:".concat(t)]), !1
                                  }
                                  this._uas_pending_reply = !0, e.server_transaction.on("stateChanged", (function t() {
                                      e.server_transaction.state !== a.C.STATUS_ACCEPTED && e.server_transaction.state !== a.C.STATUS_COMPLETED && e.server_transaction.state !== a.C.STATUS_TERMINATED || (e.server_transaction.removeListener("stateChanged", t), n._uas_pending_reply = !1)
                                  }))
                              }
                              e.hasHeader("contact") && e.server_transaction.on("stateChanged", (function() {
                                  e.server_transaction.state === a.C.STATUS_ACCEPTED && (n._remote_target = e.parseHeader("contact").uri)
                              }))
                          } else e.method === i.NOTIFY && e.hasHeader("contact") && e.server_transaction.on("stateChanged", (function() {
                              e.server_transaction.state === a.C.STATUS_COMPLETED && (n._remote_target = e.parseHeader("contact").uri)
                          }));
                          return !0
                      }
                  }, {
                      key: "id",
                      get: function() {
                          return this._id
                      }
                  }, {
                      key: "local_seqnum",
                      get: function() {
                          return this._local_seqnum
                      },
                      set: function(e) {
                          this._local_seqnum = e
                      }
                  }, {
                      key: "owner",
                      get: function() {
                          return this._owner
                      }
                  }, {
                      key: "uac_pending_reply",
                      get: function() {
                          return this._uac_pending_reply
                      },
                      set: function(e) {
                          this._uac_pending_reply = e
                      }
                  }, {
                      key: "uas_pending_reply",
                      get: function() {
                          return this._uas_pending_reply
                      }
                  }]), e
              }()
          },
          604: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }
              var r = t(965),
                  u = t(754),
                  s = t(906),
                  o = t(66),
                  i = {
                      onRequestTimeout: function() {},
                      onTransportError: function() {},
                      onSuccessResponse: function() {},
                      onErrorResponse: function() {},
                      onAuthenticated: function() {},
                      onDialogError: function() {}
                  };
              e.exports = function() {
                  function e(n, t, l) {
                      for (var r in function(e, n) {
                              if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                          }(this, e), this._dialog = n, this._ua = n._ua, this._request = t, this._eventHandlers = l, this._reattempt = !1, this._reattemptTimer = null, i) Object.prototype.hasOwnProperty.call(i, r) && (this._eventHandlers[r] || (this._eventHandlers[r] = i[r]))
                  }
                  var n, t;
                  return n = e, (t = [{
                      key: "send",
                      value: function() {
                          var e = this,
                              n = new o(this._ua, this._request, {
                                  onRequestTimeout: function() {
                                      e._eventHandlers.onRequestTimeout()
                                  },
                                  onTransportError: function() {
                                      e._eventHandlers.onTransportError()
                                  },
                                  onAuthenticated: function(n) {
                                      e._eventHandlers.onAuthenticated(n)
                                  },
                                  onReceiveResponse: function(n) {
                                      e._receiveResponse(n)
                                  }
                              });
                          n.send(), (this._request.method === r.INVITE || this._request.method === r.UPDATE && this._request.body) && n.clientTransaction.state !== u.C.STATUS_TERMINATED && (this._dialog.uac_pending_reply = !0, n.clientTransaction.on("stateChanged", (function t() {
                              n.clientTransaction.state !== u.C.STATUS_ACCEPTED && n.clientTransaction.state !== u.C.STATUS_COMPLETED && n.clientTransaction.state !== u.C.STATUS_TERMINATED || (n.clientTransaction.removeListener("stateChanged", t), e._dialog.uac_pending_reply = !1)
                          })))
                      }
                  }, {
                      key: "_receiveResponse",
                      value: function(e) {
                          var n = this;
                          408 === e.status_code || 481 === e.status_code ? this._eventHandlers.onDialogError(e) : e.method === r.INVITE && 491 === e.status_code ? this._reattempt ? e.status_code >= 200 && e.status_code < 300 ? this._eventHandlers.onSuccessResponse(e) : e.status_code >= 300 && this._eventHandlers.onErrorResponse(e) : (this._request.cseq = this._dialog.local_seqnum += 1, this._reattemptTimer = setTimeout((function() {
                              n._dialog.owner.status !== s.C.STATUS_TERMINATED && (n._reattempt = !0, n._request_sender.send())
                          }), 1e3)) : e.status_code >= 200 && e.status_code < 300 ? this._eventHandlers.onSuccessResponse(e) : e.status_code >= 300 && this._eventHandlers.onErrorResponse(e)
                      }
                  }, {
                      key: "request",
                      get: function() {
                          return this._request
                      }
                  }]) && l(n.prototype, t), e
              }()
          },
          999: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }
              var r = t(356),
                  u = t(424),
                  s = new r("DigestAuthentication");
              e.exports = function() {
                  function e(n) {
                      ! function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, e), this._credentials = n, this._cnonce = null, this._nc = 0, this._ncHex = "00000000", this._algorithm = null, this._realm = null, this._nonce = null, this._opaque = null, this._stale = null, this._qop = null, this._method = null, this._uri = null, this._ha1 = null, this._response = null
                  }
                  var n, t;
                  return n = e, t = [{
                      key: "get",
                      value: function(e) {
                          switch (e) {
                              case "realm":
                                  return this._realm;
                              case "ha1":
                                  return this._ha1;
                              default:
                                  return void s.warn('get() | cannot get "%s" parameter', e)
                          }
                      }
                  }, {
                      key: "authenticate",
                      value: function(e, n) {
                          var t = e.method,
                              l = e.ruri,
                              r = e.body,
                              o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
                          if (this._algorithm = n.algorithm, this._realm = n.realm, this._nonce = n.nonce, this._opaque = n.opaque, this._stale = n.stale, this._algorithm) {
                              if ("MD5" !== this._algorithm) return s.warn('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'), !1
                          } else this._algorithm = "MD5";
                          if (!this._nonce) return s.warn("authenticate() | challenge without Digest nonce, authentication aborted"), !1;
                          if (!this._realm) return s.warn("authenticate() | challenge without Digest realm, authentication aborted"), !1;
                          if (!this._credentials.password) {
                              if (!this._credentials.ha1) return s.warn("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"), !1;
                              if (this._credentials.realm !== this._realm) return s.warn('authenticate() | no plain SIP password, and stored `realm` does not match the given `realm`, cannot authenticate [stored:"%s", given:"%s"]', this._credentials.realm, this._realm), !1
                          }
                          if (n.qop)
                              if (n.qop.indexOf("auth-int") > -1) this._qop = "auth-int";
                              else {
                                  if (!(n.qop.indexOf("auth") > -1)) return s.warn('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'), !1;
                                  this._qop = "auth"
                              }
                          else this._qop = null;
                          this._method = t, this._uri = l, this._cnonce = o || u.createRandomToken(12), this._nc += 1;
                          var i, a, c = Number(this._nc).toString(16);
                          return this._ncHex = "00000000".substr(0, 8 - c.length) + c, 4294967296 === this._nc && (this._nc = 1, this._ncHex = "00000001"), this._credentials.password ? this._ha1 = u.calculateMD5("".concat(this._credentials.username, ":").concat(this._realm, ":").concat(this._credentials.password)) : this._ha1 = this._credentials.ha1, "auth" === this._qop ? (i = "".concat(this._method, ":").concat(this._uri), a = u.calculateMD5(i), s.debug('authenticate() | using qop=auth [a2:"%s"]', i), this._response = u.calculateMD5("".concat(this._ha1, ":").concat(this._nonce, ":").concat(this._ncHex, ":").concat(this._cnonce, ":auth:").concat(a))) : "auth-int" === this._qop ? (i = "".concat(this._method, ":").concat(this._uri, ":").concat(u.calculateMD5(r || "")), a = u.calculateMD5(i), s.debug('authenticate() | using qop=auth-int [a2:"%s"]', i), this._response = u.calculateMD5("".concat(this._ha1, ":").concat(this._nonce, ":").concat(this._ncHex, ":").concat(this._cnonce, ":auth-int:").concat(a))) : null === this._qop && (i = "".concat(this._method, ":").concat(this._uri), a = u.calculateMD5(i), s.debug('authenticate() | using qop=null [a2:"%s"]', i), this._response = u.calculateMD5("".concat(this._ha1, ":").concat(this._nonce, ":").concat(a))), s.debug("authenticate() | response generated"), !0
                      }
                  }, {
                      key: "toString",
                      value: function() {
                          var e = [];
                          if (!this._response) throw new Error("response field does not exist, cannot generate Authorization header");
                          return e.push("algorithm=".concat(this._algorithm)), e.push('username="'.concat(this._credentials.username, '"')), e.push('realm="'.concat(this._realm, '"')), e.push('nonce="'.concat(this._nonce, '"')), e.push('uri="'.concat(this._uri, '"')), e.push('response="'.concat(this._response, '"')), this._opaque && e.push('opaque="'.concat(this._opaque, '"')), this._qop && (e.push("qop=".concat(this._qop)), e.push('cnonce="'.concat(this._cnonce, '"')), e.push("nc=".concat(this._ncHex))), "Digest ".concat(e.join(", "))
                      }
                  }], t && l(n.prototype, t), e
              }()
          },
          63: e => {
              "use strict";

              function n(e) {
                  return n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, n(e)
              }

              function t(e, n) {
                  if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
              }

              function l(e, n) {
                  if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                  e.prototype = Object.create(n && n.prototype, {
                      constructor: {
                          value: e,
                          writable: !0,
                          configurable: !0
                      }
                  }), n && a(e, n)
              }

              function r(e) {
                  var n = i();
                  return function() {
                      var t, l = c(e);
                      if (n) {
                          var r = c(this).constructor;
                          t = Reflect.construct(l, arguments, r)
                      } else t = l.apply(this, arguments);
                      return u(this, t)
                  }
              }

              function u(e, t) {
                  return !t || "object" !== n(t) && "function" != typeof t ? function(e) {
                      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                      return e
                  }(e) : t
              }

              function s(e) {
                  var n = "function" == typeof Map ? new Map : void 0;
                  return s = function(e) {
                      if (null === e || (t = e, -1 === Function.toString.call(t).indexOf("[native code]"))) return e;
                      var t;
                      if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function");
                      if (void 0 !== n) {
                          if (n.has(e)) return n.get(e);
                          n.set(e, l)
                      }

                      function l() {
                          return o(e, arguments, c(this).constructor)
                      }
                      return l.prototype = Object.create(e.prototype, {
                          constructor: {
                              value: l,
                              enumerable: !1,
                              writable: !0,
                              configurable: !0
                          }
                      }), a(l, e)
                  }, s(e)
              }

              function o(e, n, t) {
                  return o = i() ? Reflect.construct : function(e, n, t) {
                      var l = [null];
                      l.push.apply(l, n);
                      var r = new(Function.bind.apply(e, l));
                      return t && a(r, t.prototype), r
                  }, o.apply(null, arguments)
              }

              function i() {
                  if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                  if (Reflect.construct.sham) return !1;
                  if ("function" == typeof Proxy) return !0;
                  try {
                      return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                  } catch (e) {
                      return !1
                  }
              }

              function a(e, n) {
                  return a = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, a(e, n)
              }

              function c(e) {
                  return c = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, c(e)
              }
              var h = function(e) {
                      l(u, e);
                      var n = r(u);

                      function u(e, l) {
                          var r;
                          return t(this, u), (r = n.call(this)).code = 1, r.name = "CONFIGURATION_ERROR", r.parameter = e, r.value = l, r.message = r.value ? "Invalid value ".concat(JSON.stringify(r.value), ' for parameter "').concat(r.parameter, '"') : "Missing parameter: ".concat(r.parameter), r
                      }
                      return u
                  }(s(Error)),
                  d = function(e) {
                      l(u, e);
                      var n = r(u);

                      function u(e) {
                          var l;
                          return t(this, u), (l = n.call(this)).code = 2, l.name = "INVALID_STATE_ERROR", l.status = e, l.message = "Invalid status: ".concat(e), l
                      }
                      return u
                  }(s(Error)),
                  f = function(e) {
                      l(u, e);
                      var n = r(u);

                      function u(e) {
                          var l;
                          return t(this, u), (l = n.call(this)).code = 3, l.name = "NOT_SUPPORTED_ERROR", l.message = e, l
                      }
                      return u
                  }(s(Error)),
                  _ = function(e) {
                      l(u, e);
                      var n = r(u);

                      function u(e) {
                          var l;
                          return t(this, u), (l = n.call(this)).code = 4, l.name = "NOT_READY_ERROR", l.message = e, l
                      }
                      return u
                  }(s(Error));
              e.exports = {
                  ConfigurationError: h,
                  InvalidStateError: d,
                  NotSupportedError: f,
                  NotReadyError: _
              }
          },
          790: (e, n, t) => {
              "use strict";
              e.exports = function() {
                  function e(e) {
                      return '"' + e.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g, escape) + '"'
                  }
                  var n = {
                      parse: function(n, l) {
                          var r = {
                              CRLF: a,
                              DIGIT: c,
                              ALPHA: h,
                              HEXDIG: d,
                              WSP: f,
                              OCTET: _,
                              DQUOTE: p,
                              SP: m,
                              HTAB: v,
                              alphanum: g,
                              reserved: y,
                              unreserved: C,
                              mark: T,
                              escaped: A,
                              LWS: b,
                              SWS: E,
                              HCOLON: S,
                              TEXT_UTF8_TRIM: R,
                              TEXT_UTF8char: w,
                              UTF8_NONASCII: I,
                              UTF8_CONT: O,
                              LHEX: function() {
                                  var e;
                                  return null === (e = c()) && (/^[a-f]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[a-f]"))), e
                              },
                              token: N,
                              token_nodot: k,
                              separators: function() {
                                  var e;
                                  return 40 === n.charCodeAt(u) ? (e = "(", u++) : (e = null, i('"("')), null === e && (41 === n.charCodeAt(u) ? (e = ")", u++) : (e = null, i('")"')), null === e && (60 === n.charCodeAt(u) ? (e = "<", u++) : (e = null, i('"<"')), null === e && (62 === n.charCodeAt(u) ? (e = ">", u++) : (e = null, i('">"')), null === e && (64 === n.charCodeAt(u) ? (e = "@", u++) : (e = null, i('"@"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","')), null === e && (59 === n.charCodeAt(u) ? (e = ";", u++) : (e = null, i('";"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (92 === n.charCodeAt(u) ? (e = "\\", u++) : (e = null, i('"\\\\"')), null === e && null === (e = p()) && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null === e && (91 === n.charCodeAt(u) ? (e = "[", u++) : (e = null, i('"["')), null === e && (93 === n.charCodeAt(u) ? (e = "]", u++) : (e = null, i('"]"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (123 === n.charCodeAt(u) ? (e = "{", u++) : (e = null, i('"{"')), null === e && (125 === n.charCodeAt(u) ? (e = "}", u++) : (e = null, i('"}"')), null === e && null === (e = m()) && (e = v())))))))))))))))), e
                              },
                              word: x,
                              STAR: D,
                              SLASH: P,
                              EQUAL: U,
                              LPAREN: L,
                              RPAREN: q,
                              RAQUOT: M,
                              LAQUOT: F,
                              COMMA: H,
                              SEMI: j,
                              COLON: G,
                              LDQUOT: B,
                              RDQUOT: V,
                              comment: function e() {
                                  var n, t, l, r;
                                  if (r = u, null !== (n = L())) {
                                      for (t = [], null === (l = W()) && null === (l = z()) && (l = e()); null !== l;) t.push(l), null === (l = W()) && null === (l = z()) && (l = e());
                                      null !== t && null !== (l = q()) ? n = [n, t, l] : (n = null, u = r)
                                  } else n = null, u = r;
                                  return n
                              },
                              ctext: W,
                              quoted_string: $,
                              quoted_string_clean: Y,
                              qdtext: K,
                              quoted_pair: z,
                              SIP_URI_noparams: J,
                              SIP_URI: X,
                              uri_scheme: Q,
                              uri_scheme_sips: Z,
                              uri_scheme_sip: ee,
                              userinfo: ne,
                              user: te,
                              user_unreserved: le,
                              password: re,
                              hostport: ue,
                              host: se,
                              hostname: oe,
                              domainlabel: ie,
                              toplabel: ae,
                              IPv6reference: ce,
                              IPv6address: he,
                              h16: de,
                              ls32: fe,
                              IPv4address: _e,
                              dec_octet: pe,
                              port: me,
                              uri_parameters: ve,
                              uri_parameter: ge,
                              transport_param: ye,
                              user_param: Ce,
                              method_param: Te,
                              ttl_param: Ae,
                              maddr_param: be,
                              lr_param: Ee,
                              other_param: Se,
                              pname: Re,
                              pvalue: we,
                              paramchar: Ie,
                              param_unreserved: Oe,
                              headers: Ne,
                              header: ke,
                              hname: xe,
                              hvalue: De,
                              hnv_unreserved: Pe,
                              Request_Response: function() {
                                  var e;
                                  return null === (e = hn()) && (e = Ue()), e
                              },
                              Request_Line: Ue,
                              Request_URI: Le,
                              absoluteURI: qe,
                              hier_part: Me,
                              net_path: Fe,
                              abs_path: He,
                              opaque_part: je,
                              uric: Ge,
                              uric_no_slash: Be,
                              path_segments: Ve,
                              segment: We,
                              param: $e,
                              pchar: Ye,
                              scheme: Ke,
                              authority: ze,
                              srvr: Je,
                              reg_name: Xe,
                              query: Qe,
                              SIP_Version: Ze,
                              INVITEm: en,
                              ACKm: nn,
                              OPTIONSm: tn,
                              BYEm: ln,
                              CANCELm: rn,
                              REGISTERm: un,
                              SUBSCRIBEm: sn,
                              NOTIFYm: on,
                              REFERm: an,
                              Method: cn,
                              Status_Line: hn,
                              Status_Code: dn,
                              extension_code: fn,
                              Reason_Phrase: _n,
                              Allow_Events: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = Mn())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = Mn()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = Mn()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              Call_ID: function() {
                                  var e, t, l, r, s, o;
                                  return r = u, s = u, null !== (e = x()) ? (o = u, 64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null !== t && null !== (l = x()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                      Ht = n.substring(u, e)
                                  }(r)), null === e && (u = r), e
                              },
                              Contact: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, null === (e = D()))
                                      if (s = u, null !== (e = pn())) {
                                          for (n = [], o = u, null !== (t = H()) && null !== (l = pn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = H()) && null !== (l = pn()) ? t = [t, l] : (t = null, u = o);
                                          null !== n ? e = [e, n] : (e = null, u = s)
                                      } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      var n, t;
                                      for (t = Ht.multi_header.length, n = 0; n < t; n++)
                                          if (null === Ht.multi_header[n].parsed) {
                                              Ht = null;
                                              break
                                          } Ht = null !== Ht ? Ht.multi_header : -1
                                  }()), null === e && (u = r), e
                              },
                              contact_param: pn,
                              name_addr: mn,
                              display_name: vn,
                              contact_params: gn,
                              c_p_q: yn,
                              c_p_expires: Cn,
                              delta_seconds: Tn,
                              qvalue: An,
                              generic_param: bn,
                              gen_value: En,
                              Content_Disposition: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = Sn())) {
                                      for (n = [], s = u, null !== (t = j()) && null !== (l = Rn()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = Rn()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              disp_type: Sn,
                              disp_param: Rn,
                              handling_param: wn,
                              Content_Encoding: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = N())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              Content_Length: function() {
                                  var e, n, t;
                                  if (t = u, null !== (n = c()))
                                      for (e = []; null !== n;) e.push(n), n = c();
                                  else e = null;
                                  return null !== e && (e = void(Ht = parseInt(e.join("")))), null === e && (u = t), e
                              },
                              Content_Type: function() {
                                  var e, t;
                                  return t = u, null !== (e = In()) && (e = function(e) {
                                      Ht = n.substring(u, e)
                                  }(t)), null === e && (u = t), e
                              },
                              media_type: In,
                              m_type: On,
                              discrete_type: Nn,
                              composite_type: kn,
                              extension_token: xn,
                              x_token: Dn,
                              m_subtype: Pn,
                              m_parameter: Un,
                              m_value: Ln,
                              CSeq: function() {
                                  var e, n, t, l;
                                  return l = u, null !== (e = qn()) && null !== (n = b()) && null !== (t = cn()) ? e = [e, n, t] : (e = null, u = l), e
                              },
                              CSeq_value: qn,
                              Expires: function() {
                                  var e, n;
                                  return n = u, null !== (e = Tn()) && (e = void(Ht = e)), null === e && (u = n), e
                              },
                              Event: function() {
                                  var e, n, t, l, r, s, o, i;
                                  if (r = u, s = u, null !== (e = Mn())) {
                                      for (n = [], o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (i = e[0], e = void(Ht.event = i.join("").toLowerCase())), null === e && (u = r), e
                              },
                              event_type: Mn,
                              From: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, s = u, null === (e = J()) && (e = mn()), null !== e) {
                                      for (n = [], o = u, null !== (t = j()) && null !== (l = Fn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = Fn()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      var n = Ht.tag;
                                      try {
                                          Ht = new Ft(Ht.uri, Ht.display_name, Ht.params), n && Ht.setParam("tag", n)
                                      } catch (e) {
                                          Ht = -1
                                      }
                                  }()), null === e && (u = r), e
                              },
                              from_param: Fn,
                              tag_param: Hn,
                              Max_Forwards: function() {
                                  var e, n, t;
                                  if (t = u, null !== (n = c()))
                                      for (e = []; null !== n;) e.push(n), n = c();
                                  else e = null;
                                  return null !== e && (e = void(Ht = parseInt(e.join("")))), null === e && (u = t), e
                              },
                              Min_Expires: function() {
                                  var e, n;
                                  return n = u, null !== (e = Tn()) && (e = void(Ht = e)), null === e && (u = n), e
                              },
                              Name_Addr_Header: function() {
                                  var e, n, t, l, r, s, o, i, a, c;
                                  for (i = u, a = u, e = [], n = vn(); null !== n;) e.push(n), n = vn();
                                  if (null !== e)
                                      if (null !== (n = F()))
                                          if (null !== (t = X()))
                                              if (null !== (l = M())) {
                                                  for (r = [], c = u, null !== (s = j()) && null !== (o = bn()) ? s = [s, o] : (s = null, u = c); null !== s;) r.push(s), c = u, null !== (s = j()) && null !== (o = bn()) ? s = [s, o] : (s = null, u = c);
                                                  null !== r ? e = [e, n, t, l, r] : (e = null, u = a)
                                              } else e = null, u = a;
                                  else e = null, u = a;
                                  else e = null, u = a;
                                  else e = null, u = a;
                                  return null !== e && (e = function(e) {
                                      try {
                                          Ht = new Ft(Ht.uri, Ht.display_name, Ht.params)
                                      } catch (e) {
                                          Ht = -1
                                      }
                                  }()), null === e && (u = i), e
                              },
                              Proxy_Authenticate: function() {
                                  return jn()
                              },
                              challenge: jn,
                              other_challenge: Gn,
                              auth_param: Bn,
                              digest_cln: Vn,
                              realm: Wn,
                              realm_value: $n,
                              domain: Yn,
                              URI: Kn,
                              nonce: zn,
                              nonce_value: Jn,
                              opaque: Xn,
                              stale: Qn,
                              algorithm: Zn,
                              qop_options: et,
                              qop_value: nt,
                              Proxy_Require: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = N())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              Record_Route: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, s = u, null !== (e = tt())) {
                                      for (n = [], o = u, null !== (t = H()) && null !== (l = tt()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = H()) && null !== (l = tt()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      var n, t;
                                      for (t = Ht.multi_header.length, n = 0; n < t; n++)
                                          if (null === Ht.multi_header[n].parsed) {
                                              Ht = null;
                                              break
                                          } Ht = null !== Ht ? Ht.multi_header : -1
                                  }()), null === e && (u = r), e
                              },
                              rec_route: tt,
                              Reason: function() {
                                  var e, t, l, r, s, o, a;
                                  if (s = u, o = u, "sip" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"SIP"')), null === e && (e = N()), null !== e) {
                                      for (t = [], a = u, null !== (l = j()) && null !== (r = lt()) ? l = [l, r] : (l = null, u = a); null !== l;) t.push(l), a = u, null !== (l = j()) && null !== (r = lt()) ? l = [l, r] : (l = null, u = a);
                                      null !== t ? e = [e, t] : (e = null, u = o)
                                  } else e = null, u = o;
                                  return null !== e && (e = function(e, n) {
                                      if (Ht.protocol = n.toLowerCase(), Ht.params || (Ht.params = {}), Ht.params.text && '"' === Ht.params.text[0]) {
                                          var t = Ht.params.text;
                                          Ht.text = t.substring(1, t.length - 1), delete Ht.params.text
                                      }
                                  }(0, e[0])), null === e && (u = s), e
                              },
                              reason_param: lt,
                              reason_cause: rt,
                              Require: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = N())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              Route: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = ut())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = ut()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = ut()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              route_param: ut,
                              Subscription_State: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = st())) {
                                      for (n = [], s = u, null !== (t = j()) && null !== (l = ot()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = ot()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              substate_value: st,
                              subexp_params: ot,
                              event_reason_value: it,
                              Subject: function() {
                                  var e;
                                  return null !== (e = R()) ? e : ""
                              },
                              Supported: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = N())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return null !== e ? e : ""
                              },
                              To: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, s = u, null === (e = J()) && (e = mn()), null !== e) {
                                      for (n = [], o = u, null !== (t = j()) && null !== (l = at()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = at()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      var n = Ht.tag;
                                      try {
                                          Ht = new Ft(Ht.uri, Ht.display_name, Ht.params), n && Ht.setParam("tag", n)
                                      } catch (e) {
                                          Ht = -1
                                      }
                                  }()), null === e && (u = r), e
                              },
                              to_param: at,
                              Via: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = ct())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = ct()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = ct()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              via_param: ct,
                              via_params: ht,
                              via_ttl: dt,
                              via_maddr: ft,
                              via_received: _t,
                              via_branch: pt,
                              response_port: mt,
                              rport: vt,
                              sent_protocol: gt,
                              protocol_name: yt,
                              transport: Ct,
                              sent_by: Tt,
                              via_host: At,
                              via_port: bt,
                              ttl: Et,
                              WWW_Authenticate: function() {
                                  return jn()
                              },
                              Session_Expires: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = St())) {
                                      for (n = [], s = u, null !== (t = j()) && null !== (l = Rt()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = Rt()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              s_e_expires: St,
                              s_e_params: Rt,
                              s_e_refresher: wt,
                              extension_header: function() {
                                  var e, n, t, l;
                                  return l = u, null !== (e = N()) && null !== (n = S()) && null !== (t = It()) ? e = [e, n, t] : (e = null, u = l), e
                              },
                              header_value: It,
                              message_body: function() {
                                  var e, n;
                                  for (e = [], n = _(); null !== n;) e.push(n), n = _();
                                  return e
                              },
                              uuid_URI: function() {
                                  var e, t, l;
                                  return l = u, "uuid:" === n.substr(u, 5) ? (e = "uuid:", u += 5) : (e = null, i('"uuid:"')), null !== e && null !== (t = Ot()) ? e = [e, t] : (e = null, u = l), e
                              },
                              uuid: Ot,
                              hex4: Nt,
                              hex8: kt,
                              hex12: xt,
                              Refer_To: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, s = u, null === (e = J()) && (e = mn()), null !== e) {
                                      for (n = [], o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      try {
                                          Ht = new Ft(Ht.uri, Ht.display_name, Ht.params)
                                      } catch (e) {
                                          Ht = -1
                                      }
                                  }()), null === e && (u = r), e
                              },
                              Replaces: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = Dt())) {
                                      for (n = [], s = u, null !== (t = j()) && null !== (l = Pt()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = Pt()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              call_id: Dt,
                              replaces_param: Pt,
                              to_tag: Ut,
                              from_tag: Lt,
                              early_flag: qt
                          };
                          if (void 0 !== l) {
                              if (void 0 === r[l]) throw new Error("Invalid rule name: " + e(l) + ".")
                          } else l = "CRLF";
                          var u = 0,
                              s = 0,
                              o = [];

                          function i(e) {
                              u < s || (u > s && (s = u, o = []), o.push(e))
                          }

                          function a() {
                              var e;
                              return "\r\n" === n.substr(u, 2) ? (e = "\r\n", u += 2) : (e = null, i('"\\r\\n"')), e
                          }

                          function c() {
                              var e;
                              return /^[0-9]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[0-9]")), e
                          }

                          function h() {
                              var e;
                              return /^[a-zA-Z]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[a-zA-Z]")), e
                          }

                          function d() {
                              var e;
                              return /^[0-9a-fA-F]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[0-9a-fA-F]")), e
                          }

                          function f() {
                              var e;
                              return null === (e = m()) && (e = v()), e
                          }

                          function _() {
                              var e;
                              return /^[\0-\xFF]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\0-\\xFF]")), e
                          }

                          function p() {
                              var e;
                              return /^["]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i('["]')), e
                          }

                          function m() {
                              var e;
                              return 32 === n.charCodeAt(u) ? (e = " ", u++) : (e = null, i('" "')), e
                          }

                          function v() {
                              var e;
                              return 9 === n.charCodeAt(u) ? (e = "\t", u++) : (e = null, i('"\\t"')), e
                          }

                          function g() {
                              var e;
                              return /^[a-zA-Z0-9]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[a-zA-Z0-9]")), e
                          }

                          function y() {
                              var e;
                              return 59 === n.charCodeAt(u) ? (e = ";", u++) : (e = null, i('";"')), null === e && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (64 === n.charCodeAt(u) ? (e = "@", u++) : (e = null, i('"@"')), null === e && (38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","'))))))))))), e
                          }

                          function C() {
                              var e;
                              return null === (e = g()) && (e = T()), e
                          }

                          function T() {
                              var e;
                              return 45 === n.charCodeAt(u) ? (e = "-", u++) : (e = null, i('"-"')), null === e && (95 === n.charCodeAt(u) ? (e = "_", u++) : (e = null, i('"_"')), null === e && (46 === n.charCodeAt(u) ? (e = ".", u++) : (e = null, i('"."')), null === e && (33 === n.charCodeAt(u) ? (e = "!", u++) : (e = null, i('"!"')), null === e && (126 === n.charCodeAt(u) ? (e = "~", u++) : (e = null, i('"~"')), null === e && (42 === n.charCodeAt(u) ? (e = "*", u++) : (e = null, i('"*"')), null === e && (39 === n.charCodeAt(u) ? (e = "'", u++) : (e = null, i('"\'"')), null === e && (40 === n.charCodeAt(u) ? (e = "(", u++) : (e = null, i('"("')), null === e && (41 === n.charCodeAt(u) ? (e = ")", u++) : (e = null, i('")"')))))))))), e
                          }

                          function A() {
                              var e, t, l, r, s;
                              return r = u, s = u, 37 === n.charCodeAt(u) ? (e = "%", u++) : (e = null, i('"%"')), null !== e && null !== (t = d()) && null !== (l = d()) ? e = [e, t, l] : (e = null, u = s), null !== e && (e = e.join("")), null === e && (u = r), e
                          }

                          function b() {
                              var e, n, t, l, r, s;
                              for (l = u, r = u, s = u, e = [], n = f(); null !== n;) e.push(n), n = f();
                              if (null !== e && null !== (n = a()) ? e = [e, n] : (e = null, u = s), null !== (e = null !== e ? e : "")) {
                                  if (null !== (t = f()))
                                      for (n = []; null !== t;) n.push(t), t = f();
                                  else n = null;
                                  null !== n ? e = [e, n] : (e = null, u = r)
                              } else e = null, u = r;
                              return null !== e && (e = " "), null === e && (u = l), e
                          }

                          function E() {
                              var e;
                              return null !== (e = b()) ? e : ""
                          }

                          function S() {
                              var e, t, l, r, s;
                              for (r = u, s = u, e = [], null === (t = m()) && (t = v()); null !== t;) e.push(t), null === (t = m()) && (t = v());
                              return null !== e ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ":"), null === e && (u = r), e
                          }

                          function R() {
                              var e, t, l, r, s, o, i;
                              if (s = u, o = u, null !== (t = w()))
                                  for (e = []; null !== t;) e.push(t), t = w();
                              else e = null;
                              if (null !== e) {
                                  for (t = [], i = u, l = [], r = b(); null !== r;) l.push(r), r = b();
                                  for (null !== l && null !== (r = w()) ? l = [l, r] : (l = null, u = i); null !== l;) {
                                      for (t.push(l), i = u, l = [], r = b(); null !== r;) l.push(r), r = b();
                                      null !== l && null !== (r = w()) ? l = [l, r] : (l = null, u = i)
                                  }
                                  null !== t ? e = [e, t] : (e = null, u = o)
                              } else e = null, u = o;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(s)), null === e && (u = s), e
                          }

                          function w() {
                              var e;
                              return /^[!-~]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[!-~]")), null === e && (e = I()), e
                          }

                          function I() {
                              var e;
                              return /^[\x80-\uFFFF]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\x80-\\uFFFF]")), e
                          }

                          function O() {
                              var e;
                              return /^[\x80-\xBF]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\x80-\\xBF]")), e
                          }

                          function N() {
                              var e, t, l;
                              if (l = u, null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"')))))))))))), null !== t)
                                  for (e = []; null !== t;) e.push(t), null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"'))))))))))));
                              else e = null;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function k() {
                              var e, t, l;
                              if (l = u, null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"'))))))))))), null !== t)
                                  for (e = []; null !== t;) e.push(t), null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"')))))))))));
                              else e = null;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function x() {
                              var e, t, l;
                              if (l = u, null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"')), null === t && (40 === n.charCodeAt(u) ? (t = "(", u++) : (t = null, i('"("')), null === t && (41 === n.charCodeAt(u) ? (t = ")", u++) : (t = null, i('")"')), null === t && (60 === n.charCodeAt(u) ? (t = "<", u++) : (t = null, i('"<"')), null === t && (62 === n.charCodeAt(u) ? (t = ">", u++) : (t = null, i('">"')), null === t && (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null === t && (92 === n.charCodeAt(u) ? (t = "\\", u++) : (t = null, i('"\\\\"')), null === t && null === (t = p()) && (47 === n.charCodeAt(u) ? (t = "/", u++) : (t = null, i('"/"')), null === t && (91 === n.charCodeAt(u) ? (t = "[", u++) : (t = null, i('"["')), null === t && (93 === n.charCodeAt(u) ? (t = "]", u++) : (t = null, i('"]"')), null === t && (63 === n.charCodeAt(u) ? (t = "?", u++) : (t = null, i('"?"')), null === t && (123 === n.charCodeAt(u) ? (t = "{", u++) : (t = null, i('"{"')), null === t && (125 === n.charCodeAt(u) ? (t = "}", u++) : (t = null, i('"}"')))))))))))))))))))))))), null !== t)
                                  for (e = []; null !== t;) e.push(t), null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"')), null === t && (40 === n.charCodeAt(u) ? (t = "(", u++) : (t = null, i('"("')), null === t && (41 === n.charCodeAt(u) ? (t = ")", u++) : (t = null, i('")"')), null === t && (60 === n.charCodeAt(u) ? (t = "<", u++) : (t = null, i('"<"')), null === t && (62 === n.charCodeAt(u) ? (t = ">", u++) : (t = null, i('">"')), null === t && (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null === t && (92 === n.charCodeAt(u) ? (t = "\\", u++) : (t = null, i('"\\\\"')), null === t && null === (t = p()) && (47 === n.charCodeAt(u) ? (t = "/", u++) : (t = null, i('"/"')), null === t && (91 === n.charCodeAt(u) ? (t = "[", u++) : (t = null, i('"["')), null === t && (93 === n.charCodeAt(u) ? (t = "]", u++) : (t = null, i('"]"')), null === t && (63 === n.charCodeAt(u) ? (t = "?", u++) : (t = null, i('"?"')), null === t && (123 === n.charCodeAt(u) ? (t = "{", u++) : (t = null, i('"{"')), null === t && (125 === n.charCodeAt(u) ? (t = "}", u++) : (t = null, i('"}"'))))))))))))))))))))))));
                              else e = null;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function D() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = "*"), null === e && (u = r), e
                          }

                          function P() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (47 === n.charCodeAt(u) ? (t = "/", u++) : (t = null, i('"/"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = "/"), null === e && (u = r), e
                          }

                          function U() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = "="), null === e && (u = r), e
                          }

                          function L() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (40 === n.charCodeAt(u) ? (t = "(", u++) : (t = null, i('"("')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = "("), null === e && (u = r), e
                          }

                          function q() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (41 === n.charCodeAt(u) ? (t = ")", u++) : (t = null, i('")"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ")"), null === e && (u = r), e
                          }

                          function M() {
                              var e, t, l, r;
                              return l = u, r = u, 62 === n.charCodeAt(u) ? (e = ">", u++) : (e = null, i('">"')), null !== e && null !== (t = E()) ? e = [e, t] : (e = null, u = r), null !== e && (e = ">"), null === e && (u = l), e
                          }

                          function F() {
                              var e, t, l, r;
                              return l = u, r = u, null !== (e = E()) ? (60 === n.charCodeAt(u) ? (t = "<", u++) : (t = null, i('"<"')), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null !== e && (e = "<"), null === e && (u = l), e
                          }

                          function H() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ","), null === e && (u = r), e
                          }

                          function j() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ";"), null === e && (u = r), e
                          }

                          function G() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ":"), null === e && (u = r), e
                          }

                          function B() {
                              var e, n, t, l;
                              return t = u, l = u, null !== (e = E()) && null !== (n = p()) ? e = [e, n] : (e = null, u = l), null !== e && (e = '"'), null === e && (u = t), e
                          }

                          function V() {
                              var e, n, t, l;
                              return t = u, l = u, null !== (e = p()) && null !== (n = E()) ? e = [e, n] : (e = null, u = l), null !== e && (e = '"'), null === e && (u = t), e
                          }

                          function W() {
                              var e;
                              return /^[!-']/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[!-']")), null === e && (/^[*-[]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[*-[]")), null === e && (/^[\]-~]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\]-~]")), null === e && null === (e = I()) && (e = b()))), e
                          }

                          function $() {
                              var e, t, l, r, s, o;
                              if (s = u, o = u, null !== (e = E()))
                                  if (null !== (t = p())) {
                                      for (l = [], null === (r = K()) && (r = z()); null !== r;) l.push(r), null === (r = K()) && (r = z());
                                      null !== l && null !== (r = p()) ? e = [e, t, l, r] : (e = null, u = o)
                                  } else e = null, u = o;
                              else e = null, u = o;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(s)), null === e && (u = s), e
                          }

                          function Y() {
                              var e, t, l, r, s, o;
                              if (s = u, o = u, null !== (e = E()))
                                  if (null !== (t = p())) {
                                      for (l = [], null === (r = K()) && (r = z()); null !== r;) l.push(r), null === (r = K()) && (r = z());
                                      null !== l && null !== (r = p()) ? e = [e, t, l, r] : (e = null, u = o)
                                  } else e = null, u = o;
                              else e = null, u = o;
                              return null !== e && (e = function(e) {
                                  var t = n.substring(u, e).trim();
                                  return t.substring(1, t.length - 1).replace(/\\([\x00-\x09\x0b-\x0c\x0e-\x7f])/g, "$1")
                              }(s)), null === e && (u = s), e
                          }

                          function K() {
                              var e;
                              return null === (e = b()) && (33 === n.charCodeAt(u) ? (e = "!", u++) : (e = null, i('"!"')), null === e && (/^[#-[]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[#-[]")), null === e && (/^[\]-~]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\]-~]")), null === e && (e = I())))), e
                          }

                          function z() {
                              var e, t, l;
                              return l = u, 92 === n.charCodeAt(u) ? (e = "\\", u++) : (e = null, i('"\\\\"')), null !== e ? (/^[\0-\t]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[\\0-\\t]")), null === t && (/^[\x0B-\f]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[\\x0B-\\f]")), null === t && (/^[\x0E-]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[\\x0E-]")))), null !== t ? e = [e, t] : (e = null, u = l)) : (e = null, u = l), e
                          }

                          function J() {
                              var e, t, l, r, s, o;
                              return s = u, o = u, null !== (e = Q()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = null !== (l = ne()) ? l : "") && null !== (r = ue()) ? e = [e, t, l, r] : (e = null, u = o)) : (e = null, u = o), null !== e && (e = function(e) {
                                  try {
                                      Ht.uri = new Mt(Ht.scheme, Ht.user, Ht.host, Ht.port), delete Ht.scheme, delete Ht.user, delete Ht.host, delete Ht.host_type, delete Ht.port
                                  } catch (e) {
                                      Ht = -1
                                  }
                              }()), null === e && (u = s), e
                          }

                          function X() {
                              var e, t, r, s, o, a, c, h;
                              return c = u, h = u, null !== (e = Q()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (r = null !== (r = ne()) ? r : "") && null !== (s = ue()) && null !== (o = ve()) && null !== (a = null !== (a = Ne()) ? a : "") ? e = [e, t, r, s, o, a] : (e = null, u = h)) : (e = null, u = h), null !== e && (e = function(e) {
                                  try {
                                      Ht.uri = new Mt(Ht.scheme, Ht.user, Ht.host, Ht.port, Ht.uri_params, Ht.uri_headers), delete Ht.scheme, delete Ht.user, delete Ht.host, delete Ht.host_type, delete Ht.port, delete Ht.uri_params, "SIP_URI" === l && (Ht = Ht.uri)
                                  } catch (e) {
                                      Ht = -1
                                  }
                              }()), null === e && (u = c), e
                          }

                          function Q() {
                              var e;
                              return null === (e = Z()) && (e = ee()), e
                          }

                          function Z() {
                              var e, t, l;
                              return t = u, "sips" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"sips"')), null !== e && (l = e, e = void(Ht.scheme = l.toLowerCase())), null === e && (u = t), e
                          }

                          function ee() {
                              var e, t, l;
                              return t = u, "sip" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"sip"')), null !== e && (l = e, e = void(Ht.scheme = l.toLowerCase())), null === e && (u = t), e
                          }

                          function ne() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, null !== (e = te()) ? (o = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = re()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? (64 === n.charCodeAt(u) ? (l = "@", u++) : (l = null, i('"@"')), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                  Ht.user = decodeURIComponent(n.substring(u - 1, e))
                              }(r)), null === e && (u = r), e
                          }

                          function te() {
                              var e, n;
                              if (null === (n = C()) && null === (n = A()) && (n = le()), null !== n)
                                  for (e = []; null !== n;) e.push(n), null === (n = C()) && null === (n = A()) && (n = le());
                              else e = null;
                              return e
                          }

                          function le() {
                              var e;
                              return 38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","')), null === e && (59 === n.charCodeAt(u) ? (e = ";", u++) : (e = null, i('";"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"'))))))))), e
                          }

                          function re() {
                              var e, t, l;
                              for (l = u, e = [], null === (t = C()) && null === (t = A()) && (38 === n.charCodeAt(u) ? (t = "&", u++) : (t = null, i('"&"')), null === t && (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (36 === n.charCodeAt(u) ? (t = "$", u++) : (t = null, i('"$"')), null === t && (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","'))))))); null !== t;) e.push(t), null === (t = C()) && null === (t = A()) && (38 === n.charCodeAt(u) ? (t = "&", u++) : (t = null, i('"&"')), null === t && (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (36 === n.charCodeAt(u) ? (t = "$", u++) : (t = null, i('"$"')), null === t && (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","')))))));
                              return null !== e && (e = function(e) {
                                  Ht.password = n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function ue() {
                              var e, t, l, r, s;
                              return r = u, null !== (e = se()) ? (s = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = me()) ? t = [t, l] : (t = null, u = s), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function se() {
                              var e, t;
                              return t = u, null === (e = oe()) && null === (e = _e()) && (e = ce()), null !== e && (e = function(e) {
                                  return Ht.host = n.substring(u, e).toLowerCase(), Ht.host
                              }(t)), null === e && (u = t), e
                          }

                          function oe() {
                              var e, t, l, r, s, o;
                              for (r = u, s = u, e = [], o = u, null !== (t = ie()) ? (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== l ? t = [t, l] : (t = null, u = o)) : (t = null, u = o); null !== t;) e.push(t), o = u, null !== (t = ie()) ? (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== l ? t = [t, l] : (t = null, u = o)) : (t = null, u = o);
                              return null !== e && null !== (t = ae()) ? (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== (l = null !== l ? l : "") ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                  return Ht.host_type = "domain", n.substring(u, e)
                              }(r)), null === e && (u = r), e
                          }

                          function ie() {
                              var e, t, l, r;
                              if (r = u, null !== (e = g())) {
                                  for (t = [], null === (l = g()) && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (95 === n.charCodeAt(u) ? (l = "_", u++) : (l = null, i('"_"')))); null !== l;) t.push(l), null === (l = g()) && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (95 === n.charCodeAt(u) ? (l = "_", u++) : (l = null, i('"_"'))));
                                  null !== t ? e = [e, t] : (e = null, u = r)
                              } else e = null, u = r;
                              return e
                          }

                          function ae() {
                              var e, t, l, r;
                              if (r = u, null !== (e = h())) {
                                  for (t = [], null === (l = g()) && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (95 === n.charCodeAt(u) ? (l = "_", u++) : (l = null, i('"_"')))); null !== l;) t.push(l), null === (l = g()) && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (95 === n.charCodeAt(u) ? (l = "_", u++) : (l = null, i('"_"'))));
                                  null !== t ? e = [e, t] : (e = null, u = r)
                              } else e = null, u = r;
                              return e
                          }

                          function ce() {
                              var e, t, l, r, s;
                              return r = u, s = u, 91 === n.charCodeAt(u) ? (e = "[", u++) : (e = null, i('"["')), null !== e && null !== (t = he()) ? (93 === n.charCodeAt(u) ? (l = "]", u++) : (l = null, i('"]"')), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                  return Ht.host_type = "IPv6", n.substring(u, e)
                              }(r)), null === e && (u = r), e
                          }

                          function he() {
                              var e, t, l, r, s, o, a, c, h, d, f, _, p, m, v, g;
                              return m = u, v = u, null !== (e = de()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? (58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? (58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? (58 === n.charCodeAt(u) ? (c = ":", u++) : (c = null, i('":"')), null !== c && null !== (h = de()) ? (58 === n.charCodeAt(u) ? (d = ":", u++) : (d = null, i('":"')), null !== d && null !== (f = de()) ? (58 === n.charCodeAt(u) ? (_ = ":", u++) : (_ = null, i('":"')), null !== _ && null !== (p = fe()) ? e = [e, t, l, r, s, o, a, c, h, d, f, _, p] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = de()) ? (58 === n.charCodeAt(u) ? (h = ":", u++) : (h = null, i('":"')), null !== h && null !== (d = de()) ? (58 === n.charCodeAt(u) ? (f = ":", u++) : (f = null, i('":"')), null !== f && null !== (_ = fe()) ? e = [e, t, l, r, s, o, a, c, h, d, f, _] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = de()) ? (58 === n.charCodeAt(u) ? (h = ":", u++) : (h = null, i('":"')), null !== h && null !== (d = fe()) ? e = [e, t, l, r, s, o, a, c, h, d] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = fe()) ? e = [e, t, l, r, s, o, a, c] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = fe()) ? e = [e, t, l, r, s, o] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = fe()) ? e = [e, t, l, r] : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = fe()) ? e = [e, t] : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? e = [e, t] : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? ("::" === n.substr(u, 2) ? (t = "::", u += 2) : (t = null, i('"::"')), null !== t && null !== (l = de()) ? (58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? (58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? (58 === n.charCodeAt(u) ? (c = ":", u++) : (c = null, i('":"')), null !== c && null !== (h = de()) ? (58 === n.charCodeAt(u) ? (d = ":", u++) : (d = null, i('":"')), null !== d && null !== (f = fe()) ? e = [e, t, l, r, s, o, a, c, h, d, f] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? ("::" === n.substr(u, 2) ? (l = "::", u += 2) : (l = null, i('"::"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = de()) ? (58 === n.charCodeAt(u) ? (h = ":", u++) : (h = null, i('":"')), null !== h && null !== (d = fe()) ? e = [e, t, l, r, s, o, a, c, h, d] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? ("::" === n.substr(u, 2) ? (r = "::", u += 2) : (r = null, i('"::"')), null !== r && null !== (s = de()) ? (58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? (58 === n.charCodeAt(u) ? (c = ":", u++) : (c = null, i('":"')), null !== c && null !== (h = fe()) ? e = [e, t, l, r, s, o, a, c, h] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? (g = u, 58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? r = [r, s] : (r = null, u = g), null !== (r = null !== r ? r : "") ? ("::" === n.substr(u, 2) ? (s = "::", u += 2) : (s = null, i('"::"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = fe()) ? e = [e, t, l, r, s, o, a, c] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? (g = u, 58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? r = [r, s] : (r = null, u = g), null !== (r = null !== r ? r : "") ? (g = u, 58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? s = [s, o] : (s = null, u = g), null !== (s = null !== s ? s : "") ? ("::" === n.substr(u, 2) ? (o = "::", u += 2) : (o = null, i('"::"')), null !== o && null !== (a = fe()) ? e = [e, t, l, r, s, o, a] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? (g = u, 58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? r = [r, s] : (r = null, u = g), null !== (r = null !== r ? r : "") ? (g = u, 58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? s = [s, o] : (s = null, u = g), null !== (s = null !== s ? s : "") ? (g = u, 58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? o = [o, a] : (o = null, u = g), null !== (o = null !== o ? o : "") ? ("::" === n.substr(u, 2) ? (a = "::", u += 2) : (a = null, i('"::"')), null !== a && null !== (c = de()) ? e = [e, t, l, r, s, o, a, c] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? (g = u, 58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? r = [r, s] : (r = null, u = g), null !== (r = null !== r ? r : "") ? (g = u, 58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? s = [s, o] : (s = null, u = g), null !== (s = null !== s ? s : "") ? (g = u, 58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? o = [o, a] : (o = null, u = g), null !== (o = null !== o ? o : "") ? (g = u, 58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = de()) ? a = [a, c] : (a = null, u = g), null !== (a = null !== a ? a : "") ? ("::" === n.substr(u, 2) ? (c = "::", u += 2) : (c = null, i('"::"')), null !== c ? e = [e, t, l, r, s, o, a, c] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v))))))))))))))), null !== e && (e = function(e) {
                                  return Ht.host_type = "IPv6", n.substring(u, e)
                              }(m)), null === e && (u = m), e
                          }

                          function de() {
                              var e, n, t, l, r;
                              return r = u, null !== (e = d()) && null !== (n = null !== (n = d()) ? n : "") && null !== (t = null !== (t = d()) ? t : "") && null !== (l = null !== (l = d()) ? l : "") ? e = [e, n, t, l] : (e = null, u = r), e
                          }

                          function fe() {
                              var e, t, l, r;
                              return r = u, null !== (e = de()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r), null === e && (e = _e()), e
                          }

                          function _e() {
                              var e, t, l, r, s, o, a, c, h;
                              return c = u, h = u, null !== (e = pe()) ? (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null !== t && null !== (l = pe()) ? (46 === n.charCodeAt(u) ? (r = ".", u++) : (r = null, i('"."')), null !== r && null !== (s = pe()) ? (46 === n.charCodeAt(u) ? (o = ".", u++) : (o = null, i('"."')), null !== o && null !== (a = pe()) ? e = [e, t, l, r, s, o, a] : (e = null, u = h)) : (e = null, u = h)) : (e = null, u = h)) : (e = null, u = h), null !== e && (e = function(e) {
                                  return Ht.host_type = "IPv4", n.substring(u, e)
                              }(c)), null === e && (u = c), e
                          }

                          function pe() {
                              var e, t, l, r;
                              return r = u, "25" === n.substr(u, 2) ? (e = "25", u += 2) : (e = null, i('"25"')), null !== e ? (/^[0-5]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[0-5]")), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null === e && (r = u, 50 === n.charCodeAt(u) ? (e = "2", u++) : (e = null, i('"2"')), null !== e ? (/^[0-4]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[0-4]")), null !== t && null !== (l = c()) ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r), null === e && (r = u, 49 === n.charCodeAt(u) ? (e = "1", u++) : (e = null, i('"1"')), null !== e && null !== (t = c()) && null !== (l = c()) ? e = [e, t, l] : (e = null, u = r), null === e && (r = u, /^[1-9]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[1-9]")), null !== e && null !== (t = c()) ? e = [e, t] : (e = null, u = r), null === e && (e = c())))), e
                          }

                          function me() {
                              var e, n, t, l, r, s, o, i;
                              return s = u, o = u, null !== (e = null !== (e = c()) ? e : "") && null !== (n = null !== (n = c()) ? n : "") && null !== (t = null !== (t = c()) ? t : "") && null !== (l = null !== (l = c()) ? l : "") && null !== (r = null !== (r = c()) ? r : "") ? e = [e, n, t, l, r] : (e = null, u = o), null !== e && (i = e, i = parseInt(i.join("")), Ht.port = i, e = i), null === e && (u = s), e
                          }

                          function ve() {
                              var e, t, l, r;
                              for (e = [], r = u, 59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null !== t && null !== (l = ge()) ? t = [t, l] : (t = null, u = r); null !== t;) e.push(t), r = u, 59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null !== t && null !== (l = ge()) ? t = [t, l] : (t = null, u = r);
                              return e
                          }

                          function ge() {
                              var e;
                              return null === (e = ye()) && null === (e = Ce()) && null === (e = Te()) && null === (e = Ae()) && null === (e = be()) && null === (e = Ee()) && (e = Se()), e
                          }

                          function ye() {
                              var e, t, l, r, s;
                              return l = u, r = u, "transport=" === n.substr(u, 10).toLowerCase() ? (e = n.substr(u, 10), u += 10) : (e = null, i('"transport="')), null !== e ? ("udp" === n.substr(u, 3).toLowerCase() ? (t = n.substr(u, 3), u += 3) : (t = null, i('"udp"')), null === t && ("tcp" === n.substr(u, 3).toLowerCase() ? (t = n.substr(u, 3), u += 3) : (t = null, i('"tcp"')), null === t && ("sctp" === n.substr(u, 4).toLowerCase() ? (t = n.substr(u, 4), u += 4) : (t = null, i('"sctp"')), null === t && ("tls" === n.substr(u, 3).toLowerCase() ? (t = n.substr(u, 3), u += 3) : (t = null, i('"tls"')), null === t && (t = N())))), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null !== e && (s = e[1], Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.transport = s.toLowerCase())), null === e && (u = l), e
                          }

                          function Ce() {
                              var e, t, l, r, s;
                              return l = u, r = u, "user=" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"user="')), null !== e ? ("phone" === n.substr(u, 5).toLowerCase() ? (t = n.substr(u, 5), u += 5) : (t = null, i('"phone"')), null === t && ("ip" === n.substr(u, 2).toLowerCase() ? (t = n.substr(u, 2), u += 2) : (t = null, i('"ip"')), null === t && (t = N())), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null !== e && (s = e[1], Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.user = s.toLowerCase())), null === e && (u = l), e
                          }

                          function Te() {
                              var e, t, l, r, s;
                              return l = u, r = u, "method=" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"method="')), null !== e && null !== (t = cn()) ? e = [e, t] : (e = null, u = r), null !== e && (s = e[1], Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.method = s)), null === e && (u = l), e
                          }

                          function Ae() {
                              var e, t, l, r, s;
                              return l = u, r = u, "ttl=" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"ttl="')), null !== e && null !== (t = Et()) ? e = [e, t] : (e = null, u = r), null !== e && (s = e[1], Ht.params || (Ht.params = {}), e = void(Ht.params.ttl = s)), null === e && (u = l), e
                          }

                          function be() {
                              var e, t, l, r, s;
                              return l = u, r = u, "maddr=" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"maddr="')), null !== e && null !== (t = se()) ? e = [e, t] : (e = null, u = r), null !== e && (s = e[1], Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.maddr = s)), null === e && (u = l), e
                          }

                          function Ee() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "lr" === n.substr(u, 2).toLowerCase() ? (e = n.substr(u, 2), u += 2) : (e = null, i('"lr"')), null !== e ? (o = u, 61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null !== t && null !== (l = N()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = s)) : (e = null, u = s), null !== e && (Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.lr = void 0)), null === e && (u = r), e
                          }

                          function Se() {
                              var e, t, l, r, s, o, a, c;
                              return r = u, s = u, null !== (e = Re()) ? (o = u, 61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null !== t && null !== (l = we()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = s)) : (e = null, u = s), null !== e && (a = e[0], c = e[1], Ht.uri_params || (Ht.uri_params = {}), c = void 0 === c ? void 0 : c[1], e = void(Ht.uri_params[a.toLowerCase()] = c)), null === e && (u = r), e
                          }

                          function Re() {
                              var e, n, t;
                              if (t = u, null !== (n = Ie()))
                                  for (e = []; null !== n;) e.push(n), n = Ie();
                              else e = null;
                              return null !== e && (e = e.join("")), null === e && (u = t), e
                          }

                          function we() {
                              var e, n, t;
                              if (t = u, null !== (n = Ie()))
                                  for (e = []; null !== n;) e.push(n), n = Ie();
                              else e = null;
                              return null !== e && (e = e.join("")), null === e && (u = t), e
                          }

                          function Ie() {
                              var e;
                              return null === (e = Oe()) && null === (e = C()) && (e = A()), e
                          }

                          function Oe() {
                              var e;
                              return 91 === n.charCodeAt(u) ? (e = "[", u++) : (e = null, i('"["')), null === e && (93 === n.charCodeAt(u) ? (e = "]", u++) : (e = null, i('"]"')), null === e && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')))))))), e
                          }

                          function Ne() {
                              var e, t, l, r, s, o, a;
                              if (o = u, 63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null !== e)
                                  if (null !== (t = ke())) {
                                      for (l = [], a = u, 38 === n.charCodeAt(u) ? (r = "&", u++) : (r = null, i('"&"')), null !== r && null !== (s = ke()) ? r = [r, s] : (r = null, u = a); null !== r;) l.push(r), a = u, 38 === n.charCodeAt(u) ? (r = "&", u++) : (r = null, i('"&"')), null !== r && null !== (s = ke()) ? r = [r, s] : (r = null, u = a);
                                      null !== l ? e = [e, t, l] : (e = null, u = o)
                                  } else e = null, u = o;
                              else e = null, u = o;
                              return e
                          }

                          function ke() {
                              var e, t, l, r, s, o, a;
                              return r = u, s = u, null !== (e = xe()) ? (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null !== t && null !== (l = De()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (o = e[0], a = e[2], o = o.join("").toLowerCase(), a = a.join(""), Ht.uri_headers || (Ht.uri_headers = {}), e = void(Ht.uri_headers[o] ? Ht.uri_headers[o].push(a) : Ht.uri_headers[o] = [a])), null === e && (u = r), e
                          }

                          function xe() {
                              var e, n;
                              if (null === (n = Pe()) && null === (n = C()) && (n = A()), null !== n)
                                  for (e = []; null !== n;) e.push(n), null === (n = Pe()) && null === (n = C()) && (n = A());
                              else e = null;
                              return e
                          }

                          function De() {
                              var e, n;
                              for (e = [], null === (n = Pe()) && null === (n = C()) && (n = A()); null !== n;) e.push(n), null === (n = Pe()) && null === (n = C()) && (n = A());
                              return e
                          }

                          function Pe() {
                              var e;
                              return 91 === n.charCodeAt(u) ? (e = "[", u++) : (e = null, i('"["')), null === e && (93 === n.charCodeAt(u) ? (e = "]", u++) : (e = null, i('"]"')), null === e && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')))))))), e
                          }

                          function Ue() {
                              var e, n, t, l, r, s;
                              return s = u, null !== (e = cn()) && null !== (n = m()) && null !== (t = Le()) && null !== (l = m()) && null !== (r = Ze()) ? e = [e, n, t, l, r] : (e = null, u = s), e
                          }

                          function Le() {
                              var e;
                              return null === (e = X()) && (e = qe()), e
                          }

                          function qe() {
                              var e, t, l, r;
                              return r = u, null !== (e = Ke()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t ? (null === (l = Me()) && (l = je()), null !== l ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function Me() {
                              var e, t, l, r, s;
                              return r = u, null === (e = Fe()) && (e = He()), null !== e ? (s = u, 63 === n.charCodeAt(u) ? (t = "?", u++) : (t = null, i('"?"')), null !== t && null !== (l = Qe()) ? t = [t, l] : (t = null, u = s), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function Fe() {
                              var e, t, l, r;
                              return r = u, "//" === n.substr(u, 2) ? (e = "//", u += 2) : (e = null, i('"//"')), null !== e && null !== (t = ze()) && null !== (l = null !== (l = He()) ? l : "") ? e = [e, t, l] : (e = null, u = r), e
                          }

                          function He() {
                              var e, t, l;
                              return l = u, 47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null !== e && null !== (t = Ve()) ? e = [e, t] : (e = null, u = l), e
                          }

                          function je() {
                              var e, n, t, l;
                              if (l = u, null !== (e = Be())) {
                                  for (n = [], t = Ge(); null !== t;) n.push(t), t = Ge();
                                  null !== n ? e = [e, n] : (e = null, u = l)
                              } else e = null, u = l;
                              return e
                          }

                          function Ge() {
                              var e;
                              return null === (e = y()) && null === (e = C()) && (e = A()), e
                          }

                          function Be() {
                              var e;
                              return null === (e = C()) && null === (e = A()) && (59 === n.charCodeAt(u) ? (e = ";", u++) : (e = null, i('";"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (64 === n.charCodeAt(u) ? (e = "@", u++) : (e = null, i('"@"')), null === e && (38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","'))))))))))), e
                          }

                          function Ve() {
                              var e, t, l, r, s, o;
                              if (s = u, null !== (e = We())) {
                                  for (t = [], o = u, 47 === n.charCodeAt(u) ? (l = "/", u++) : (l = null, i('"/"')), null !== l && null !== (r = We()) ? l = [l, r] : (l = null, u = o); null !== l;) t.push(l), o = u, 47 === n.charCodeAt(u) ? (l = "/", u++) : (l = null, i('"/"')), null !== l && null !== (r = We()) ? l = [l, r] : (l = null, u = o);
                                  null !== t ? e = [e, t] : (e = null, u = s)
                              } else e = null, u = s;
                              return e
                          }

                          function We() {
                              var e, t, l, r, s, o;
                              for (s = u, e = [], t = Ye(); null !== t;) e.push(t), t = Ye();
                              if (null !== e) {
                                  for (t = [], o = u, 59 === n.charCodeAt(u) ? (l = ";", u++) : (l = null, i('";"')), null !== l && null !== (r = $e()) ? l = [l, r] : (l = null, u = o); null !== l;) t.push(l), o = u, 59 === n.charCodeAt(u) ? (l = ";", u++) : (l = null, i('";"')), null !== l && null !== (r = $e()) ? l = [l, r] : (l = null, u = o);
                                  null !== t ? e = [e, t] : (e = null, u = s)
                              } else e = null, u = s;
                              return e
                          }

                          function $e() {
                              var e, n;
                              for (e = [], n = Ye(); null !== n;) e.push(n), n = Ye();
                              return e
                          }

                          function Ye() {
                              var e;
                              return null === (e = C()) && null === (e = A()) && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (64 === n.charCodeAt(u) ? (e = "@", u++) : (e = null, i('"@"')), null === e && (38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","'))))))))), e
                          }

                          function Ke() {
                              var e, t, l, r, s;
                              if (r = u, s = u, null !== (e = h())) {
                                  for (t = [], null === (l = h()) && null === (l = c()) && (43 === n.charCodeAt(u) ? (l = "+", u++) : (l = null, i('"+"')), null === l && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."'))))); null !== l;) t.push(l), null === (l = h()) && null === (l = c()) && (43 === n.charCodeAt(u) ? (l = "+", u++) : (l = null, i('"+"')), null === l && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')))));
                                  null !== t ? e = [e, t] : (e = null, u = s)
                              } else e = null, u = s;
                              return null !== e && (e = function(e) {
                                  Ht.scheme = n.substring(u, e)
                              }(r)), null === e && (u = r), e
                          }

                          function ze() {
                              var e;
                              return null === (e = Je()) && (e = Xe()), e
                          }

                          function Je() {
                              var e, t, l, r;
                              return l = u, r = u, null !== (e = ne()) ? (64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null !== (e = null !== e ? e : "") && null !== (t = ue()) ? e = [e, t] : (e = null, u = l), null !== e ? e : ""
                          }

                          function Xe() {
                              var e, t;
                              if (null === (t = C()) && null === (t = A()) && (36 === n.charCodeAt(u) ? (t = "$", u++) : (t = null, i('"$"')), null === t && (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","')), null === t && (59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null === t && (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null === t && (64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null === t && (38 === n.charCodeAt(u) ? (t = "&", u++) : (t = null, i('"&"')), null === t && (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')))))))))), null !== t)
                                  for (e = []; null !== t;) e.push(t), null === (t = C()) && null === (t = A()) && (36 === n.charCodeAt(u) ? (t = "$", u++) : (t = null, i('"$"')), null === t && (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","')), null === t && (59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null === t && (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null === t && (64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null === t && (38 === n.charCodeAt(u) ? (t = "&", u++) : (t = null, i('"&"')), null === t && (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"'))))))))));
                              else e = null;
                              return e
                          }

                          function Qe() {
                              var e, n;
                              for (e = [], n = Ge(); null !== n;) e.push(n), n = Ge();
                              return e
                          }

                          function Ze() {
                              var e, t, l, r, s, o, a, h;
                              if (a = u, h = u, "sip" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"SIP"')), null !== e)
                                  if (47 === n.charCodeAt(u) ? (t = "/", u++) : (t = null, i('"/"')), null !== t) {
                                      if (null !== (r = c()))
                                          for (l = []; null !== r;) l.push(r), r = c();
                                      else l = null;
                                      if (null !== l)
                                          if (46 === n.charCodeAt(u) ? (r = ".", u++) : (r = null, i('"."')), null !== r) {
                                              if (null !== (o = c()))
                                                  for (s = []; null !== o;) s.push(o), o = c();
                                              else s = null;
                                              null !== s ? e = [e, t, l, r, s] : (e = null, u = h)
                                          } else e = null, u = h;
                                      else e = null, u = h
                                  } else e = null, u = h;
                              else e = null, u = h;
                              return null !== e && (e = function(e) {
                                  Ht.sip_version = n.substring(u, e)
                              }(a)), null === e && (u = a), e
                          }

                          function en() {
                              var e;
                              return "INVITE" === n.substr(u, 6) ? (e = "INVITE", u += 6) : (e = null, i('"INVITE"')), e
                          }

                          function nn() {
                              var e;
                              return "ACK" === n.substr(u, 3) ? (e = "ACK", u += 3) : (e = null, i('"ACK"')), e
                          }

                          function tn() {
                              var e;
                              return "OPTIONS" === n.substr(u, 7) ? (e = "OPTIONS", u += 7) : (e = null, i('"OPTIONS"')), e
                          }

                          function ln() {
                              var e;
                              return "BYE" === n.substr(u, 3) ? (e = "BYE", u += 3) : (e = null, i('"BYE"')), e
                          }

                          function rn() {
                              var e;
                              return "CANCEL" === n.substr(u, 6) ? (e = "CANCEL", u += 6) : (e = null, i('"CANCEL"')), e
                          }

                          function un() {
                              var e;
                              return "REGISTER" === n.substr(u, 8) ? (e = "REGISTER", u += 8) : (e = null, i('"REGISTER"')), e
                          }

                          function sn() {
                              var e;
                              return "SUBSCRIBE" === n.substr(u, 9) ? (e = "SUBSCRIBE", u += 9) : (e = null, i('"SUBSCRIBE"')), e
                          }

                          function on() {
                              var e;
                              return "NOTIFY" === n.substr(u, 6) ? (e = "NOTIFY", u += 6) : (e = null, i('"NOTIFY"')), e
                          }

                          function an() {
                              var e;
                              return "REFER" === n.substr(u, 5) ? (e = "REFER", u += 5) : (e = null, i('"REFER"')), e
                          }

                          function cn() {
                              var e, t;
                              return t = u, null === (e = en()) && null === (e = nn()) && null === (e = tn()) && null === (e = ln()) && null === (e = rn()) && null === (e = un()) && null === (e = sn()) && null === (e = on()) && null === (e = an()) && (e = N()), null !== e && (e = function(e) {
                                  return Ht.method = n.substring(u, e), Ht.method
                              }(t)), null === e && (u = t), e
                          }

                          function hn() {
                              var e, n, t, l, r, s;
                              return s = u, null !== (e = Ze()) && null !== (n = m()) && null !== (t = dn()) && null !== (l = m()) && null !== (r = _n()) ? e = [e, n, t, l, r] : (e = null, u = s), e
                          }

                          function dn() {
                              var e, n, t;
                              return n = u, null !== (e = fn()) && (t = e, e = void(Ht.status_code = parseInt(t.join("")))), null === e && (u = n), e
                          }

                          function fn() {
                              var e, n, t, l;
                              return l = u, null !== (e = c()) && null !== (n = c()) && null !== (t = c()) ? e = [e, n, t] : (e = null, u = l), e
                          }

                          function _n() {
                              var e, t, l;
                              for (l = u, e = [], null === (t = y()) && null === (t = C()) && null === (t = A()) && null === (t = I()) && null === (t = O()) && null === (t = m()) && (t = v()); null !== t;) e.push(t), null === (t = y()) && null === (t = C()) && null === (t = A()) && null === (t = I()) && null === (t = O()) && null === (t = m()) && (t = v());
                              return null !== e && (e = function(e) {
                                  Ht.reason_phrase = n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function pn() {
                              var e, n, t, l, r, s, o;
                              if (r = u, s = u, null === (e = J()) && (e = mn()), null !== e) {
                                  for (n = [], o = u, null !== (t = j()) && null !== (l = gn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = gn()) ? t = [t, l] : (t = null, u = o);
                                  null !== n ? e = [e, n] : (e = null, u = s)
                              } else e = null, u = s;
                              return null !== e && (e = function(e) {
                                  var n;
                                  Ht.multi_header || (Ht.multi_header = []);
                                  try {
                                      n = new Ft(Ht.uri, Ht.display_name, Ht.params), delete Ht.uri, delete Ht.display_name, delete Ht.params
                                  } catch (e) {
                                      n = null
                                  }
                                  Ht.multi_header.push({
                                      possition: u,
                                      offset: e,
                                      parsed: n
                                  })
                              }(r)), null === e && (u = r), e
                          }

                          function mn() {
                              var e, n, t, l, r;
                              return r = u, null !== (e = null !== (e = vn()) ? e : "") && null !== (n = F()) && null !== (t = X()) && null !== (l = M()) ? e = [e, n, t, l] : (e = null, u = r), e
                          }

                          function vn() {
                              var e, n, t, l, r, s, o, i;
                              if (r = u, s = u, null !== (e = N())) {
                                  for (n = [], o = u, null !== (t = b()) && null !== (l = N()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = b()) && null !== (l = N()) ? t = [t, l] : (t = null, u = o);
                                  null !== n ? e = [e, n] : (e = null, u = s)
                              } else e = null, u = s;
                              return null === e && (e = Y()), null !== e && (i = e, e = void(Ht.display_name = "string" == typeof i ? i : i[1].reduce((function(e, n) {
                                  return e + n[0] + n[1]
                              }), i[0]))), null === e && (u = r), e
                          }

                          function gn() {
                              var e;
                              return null === (e = yn()) && null === (e = Cn()) && (e = bn()), e
                          }

                          function yn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "q" === n.substr(u, 1).toLowerCase() ? (e = n.substr(u, 1), u++) : (e = null, i('"q"')), null !== e && null !== (t = U()) && null !== (l = An()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], Ht.params || (Ht.params = {}), e = void(Ht.params.q = o)), null === e && (u = r), e
                          }

                          function Cn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "expires" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"expires"')), null !== e && null !== (t = U()) && null !== (l = Tn()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], Ht.params || (Ht.params = {}), e = void(Ht.params.expires = o)), null === e && (u = r), e
                          }

                          function Tn() {
                              var e, n, t;
                              if (t = u, null !== (n = c()))
                                  for (e = []; null !== n;) e.push(n), n = c();
                              else e = null;
                              return null !== e && (e = parseInt(e.join(""))), null === e && (u = t), e
                          }

                          function An() {
                              var e, t, l, r, s, o, a, h;
                              return o = u, a = u, 48 === n.charCodeAt(u) ? (e = "0", u++) : (e = null, i('"0"')), null !== e ? (h = u, 46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null !== t && null !== (l = null !== (l = c()) ? l : "") && null !== (r = null !== (r = c()) ? r : "") && null !== (s = null !== (s = c()) ? s : "") ? t = [t, l, r, s] : (t = null, u = h), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = a)) : (e = null, u = a), null !== e && (e = function(e) {
                                  return parseFloat(n.substring(u, e))
                              }(o)), null === e && (u = o), e
                          }

                          function bn() {
                              var e, n, t, l, r, s, o, i;
                              return l = u, r = u, null !== (e = N()) ? (s = u, null !== (n = U()) && null !== (t = En()) ? n = [n, t] : (n = null, u = s), null !== (n = null !== n ? n : "") ? e = [e, n] : (e = null, u = r)) : (e = null, u = r), null !== e && (o = e[0], i = e[1], Ht.params || (Ht.params = {}), i = void 0 === i ? void 0 : i[1], e = void(Ht.params[o.toLowerCase()] = i)), null === e && (u = l), e
                          }

                          function En() {
                              var e;
                              return null === (e = N()) && null === (e = se()) && (e = $()), e
                          }

                          function Sn() {
                              var e;
                              return "render" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"render"')), null === e && ("session" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"session"')), null === e && ("icon" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"icon"')), null === e && ("alert" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"alert"')), null === e && (e = N())))), e
                          }

                          function Rn() {
                              var e;
                              return null === (e = wn()) && (e = bn()), e
                          }

                          function wn() {
                              var e, t, l, r;
                              return r = u, "handling" === n.substr(u, 8).toLowerCase() ? (e = n.substr(u, 8), u += 8) : (e = null, i('"handling"')), null !== e && null !== (t = U()) ? ("optional" === n.substr(u, 8).toLowerCase() ? (l = n.substr(u, 8), u += 8) : (l = null, i('"optional"')), null === l && ("required" === n.substr(u, 8).toLowerCase() ? (l = n.substr(u, 8), u += 8) : (l = null, i('"required"')), null === l && (l = N())), null !== l ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function In() {
                              var e, n, t, l, r, s, o, i;
                              if (o = u, null !== (e = On()))
                                  if (null !== (n = P()))
                                      if (null !== (t = Pn())) {
                                          for (l = [], i = u, null !== (r = j()) && null !== (s = Un()) ? r = [r, s] : (r = null, u = i); null !== r;) l.push(r), i = u, null !== (r = j()) && null !== (s = Un()) ? r = [r, s] : (r = null, u = i);
                                          null !== l ? e = [e, n, t, l] : (e = null, u = o)
                                      } else e = null, u = o;
                              else e = null, u = o;
                              else e = null, u = o;
                              return e
                          }

                          function On() {
                              var e;
                              return null === (e = Nn()) && (e = kn()), e
                          }

                          function Nn() {
                              var e;
                              return "text" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"text"')), null === e && ("image" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"image"')), null === e && ("audio" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"audio"')), null === e && ("video" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"video"')), null === e && ("application" === n.substr(u, 11).toLowerCase() ? (e = n.substr(u, 11), u += 11) : (e = null, i('"application"')), null === e && (e = xn()))))), e
                          }

                          function kn() {
                              var e;
                              return "message" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"message"')), null === e && ("multipart" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"multipart"')), null === e && (e = xn())), e
                          }

                          function xn() {
                              var e;
                              return null === (e = N()) && (e = Dn()), e
                          }

                          function Dn() {
                              var e, t, l;
                              return l = u, "x-" === n.substr(u, 2).toLowerCase() ? (e = n.substr(u, 2), u += 2) : (e = null, i('"x-"')), null !== e && null !== (t = N()) ? e = [e, t] : (e = null, u = l), e
                          }

                          function Pn() {
                              var e;
                              return null === (e = xn()) && (e = N()), e
                          }

                          function Un() {
                              var e, n, t, l;
                              return l = u, null !== (e = N()) && null !== (n = U()) && null !== (t = Ln()) ? e = [e, n, t] : (e = null, u = l), e
                          }

                          function Ln() {
                              var e;
                              return null === (e = N()) && (e = $()), e
                          }

                          function qn() {
                              var e, n, t, l;
                              if (t = u, null !== (n = c()))
                                  for (e = []; null !== n;) e.push(n), n = c();
                              else e = null;
                              return null !== e && (l = e, e = void(Ht.value = parseInt(l.join("")))), null === e && (u = t), e
                          }

                          function Mn() {
                              var e, t, l, r, s, o;
                              if (s = u, null !== (e = k())) {
                                  for (t = [], o = u, 46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== l && null !== (r = k()) ? l = [l, r] : (l = null, u = o); null !== l;) t.push(l), o = u, 46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== l && null !== (r = k()) ? l = [l, r] : (l = null, u = o);
                                  null !== t ? e = [e, t] : (e = null, u = s)
                              } else e = null, u = s;
                              return e
                          }

                          function Fn() {
                              var e;
                              return null === (e = Hn()) && (e = bn()), e
                          }

                          function Hn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "tag" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"tag"')), null !== e && null !== (t = U()) && null !== (l = N()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.tag = o)), null === e && (u = r), e
                          }

                          function jn() {
                              var e, t, l, r, s, o, a, c;
                              if (a = u, "digest" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"Digest"')), null !== e)
                                  if (null !== (t = b()))
                                      if (null !== (l = Vn())) {
                                          for (r = [], c = u, null !== (s = H()) && null !== (o = Vn()) ? s = [s, o] : (s = null, u = c); null !== s;) r.push(s), c = u, null !== (s = H()) && null !== (o = Vn()) ? s = [s, o] : (s = null, u = c);
                                          null !== r ? e = [e, t, l, r] : (e = null, u = a)
                                      } else e = null, u = a;
                              else e = null, u = a;
                              else e = null, u = a;
                              return null === e && (e = Gn()), e
                          }

                          function Gn() {
                              var e, n, t, l, r, s, o, i;
                              if (o = u, null !== (e = N()))
                                  if (null !== (n = b()))
                                      if (null !== (t = Bn())) {
                                          for (l = [], i = u, null !== (r = H()) && null !== (s = Bn()) ? r = [r, s] : (r = null, u = i); null !== r;) l.push(r), i = u, null !== (r = H()) && null !== (s = Bn()) ? r = [r, s] : (r = null, u = i);
                                          null !== l ? e = [e, n, t, l] : (e = null, u = o)
                                      } else e = null, u = o;
                              else e = null, u = o;
                              else e = null, u = o;
                              return e
                          }

                          function Bn() {
                              var e, n, t, l;
                              return l = u, null !== (e = N()) && null !== (n = U()) ? (null === (t = N()) && (t = $()), null !== t ? e = [e, n, t] : (e = null, u = l)) : (e = null, u = l), e
                          }

                          function Vn() {
                              var e;
                              return null === (e = Wn()) && null === (e = Yn()) && null === (e = zn()) && null === (e = Xn()) && null === (e = Qn()) && null === (e = Zn()) && null === (e = et()) && (e = Bn()), e
                          }

                          function Wn() {
                              var e, t, l, r;
                              return r = u, "realm" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"realm"')), null !== e && null !== (t = U()) && null !== (l = $n()) ? e = [e, t, l] : (e = null, u = r), e
                          }

                          function $n() {
                              var e, n, t;
                              return n = u, null !== (e = Y()) && (t = e, e = void(Ht.realm = t)), null === e && (u = n), e
                          }

                          function Yn() {
                              var e, t, l, r, s, o, a, c, h;
                              if (c = u, "domain" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"domain"')), null !== e)
                                  if (null !== (t = U()))
                                      if (null !== (l = B()))
                                          if (null !== (r = Kn())) {
                                              if (s = [], h = u, null !== (a = m()))
                                                  for (o = []; null !== a;) o.push(a), a = m();
                                              else o = null;
                                              for (null !== o && null !== (a = Kn()) ? o = [o, a] : (o = null, u = h); null !== o;) {
                                                  if (s.push(o), h = u, null !== (a = m()))
                                                      for (o = []; null !== a;) o.push(a), a = m();
                                                  else o = null;
                                                  null !== o && null !== (a = Kn()) ? o = [o, a] : (o = null, u = h)
                                              }
                                              null !== s && null !== (o = V()) ? e = [e, t, l, r, s, o] : (e = null, u = c)
                                          } else e = null, u = c;
                              else e = null, u = c;
                              else e = null, u = c;
                              else e = null, u = c;
                              return e
                          }

                          function Kn() {
                              var e;
                              return null === (e = qe()) && (e = He()), e
                          }

                          function zn() {
                              var e, t, l, r;
                              return r = u, "nonce" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"nonce"')), null !== e && null !== (t = U()) && null !== (l = Jn()) ? e = [e, t, l] : (e = null, u = r), e
                          }

                          function Jn() {
                              var e, n, t;
                              return n = u, null !== (e = Y()) && (t = e, e = void(Ht.nonce = t)), null === e && (u = n), e
                          }

                          function Xn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "opaque" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"opaque"')), null !== e && null !== (t = U()) && null !== (l = Y()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.opaque = o)), null === e && (u = r), e
                          }

                          function Qn() {
                              var e, t, l, r, s;
                              return r = u, "stale" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"stale"')), null !== e && null !== (t = U()) ? (s = u, "true" === n.substr(u, 4).toLowerCase() ? (l = n.substr(u, 4), u += 4) : (l = null, i('"true"')), null !== l && (l = void(Ht.stale = !0)), null === l && (u = s), null === l && (s = u, "false" === n.substr(u, 5).toLowerCase() ? (l = n.substr(u, 5), u += 5) : (l = null, i('"false"')), null !== l && (l = void(Ht.stale = !1)), null === l && (u = s)), null !== l ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function Zn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "algorithm" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"algorithm"')), null !== e && null !== (t = U()) ? ("md5" === n.substr(u, 3).toLowerCase() ? (l = n.substr(u, 3), u += 3) : (l = null, i('"MD5"')), null === l && ("md5-sess" === n.substr(u, 8).toLowerCase() ? (l = n.substr(u, 8), u += 8) : (l = null, i('"MD5-sess"')), null === l && (l = N())), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.algorithm = o.toUpperCase())), null === e && (u = r), e
                          }

                          function et() {
                              var e, t, l, r, s, o, a, c, h, d;
                              if (c = u, "qop" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"qop"')), null !== e)
                                  if (null !== (t = U()))
                                      if (null !== (l = B())) {
                                          if (h = u, null !== (r = nt())) {
                                              for (s = [], d = u, 44 === n.charCodeAt(u) ? (o = ",", u++) : (o = null, i('","')), null !== o && null !== (a = nt()) ? o = [o, a] : (o = null, u = d); null !== o;) s.push(o), d = u, 44 === n.charCodeAt(u) ? (o = ",", u++) : (o = null, i('","')), null !== o && null !== (a = nt()) ? o = [o, a] : (o = null, u = d);
                                              null !== s ? r = [r, s] : (r = null, u = h)
                                          } else r = null, u = h;
                                          null !== r && null !== (s = V()) ? e = [e, t, l, r, s] : (e = null, u = c)
                                      } else e = null, u = c;
                              else e = null, u = c;
                              else e = null, u = c;
                              return e
                          }

                          function nt() {
                              var e, t, l;
                              return t = u, "auth-int" === n.substr(u, 8).toLowerCase() ? (e = n.substr(u, 8), u += 8) : (e = null, i('"auth-int"')), null === e && ("auth" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"auth"')), null === e && (e = N())), null !== e && (l = e, Ht.qop || (Ht.qop = []), e = void Ht.qop.push(l.toLowerCase())), null === e && (u = t), e
                          }

                          function tt() {
                              var e, n, t, l, r, s, o;
                              if (r = u, s = u, null !== (e = mn())) {
                                  for (n = [], o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o);
                                  null !== n ? e = [e, n] : (e = null, u = s)
                              } else e = null, u = s;
                              return null !== e && (e = function(e) {
                                  var n;
                                  Ht.multi_header || (Ht.multi_header = []);
                                  try {
                                      n = new Ft(Ht.uri, Ht.display_name, Ht.params), delete Ht.uri, delete Ht.display_name, delete Ht.params
                                  } catch (e) {
                                      n = null
                                  }
                                  Ht.multi_header.push({
                                      possition: u,
                                      offset: e,
                                      parsed: n
                                  })
                              }(r)), null === e && (u = r), e
                          }

                          function lt() {
                              var e;
                              return null === (e = rt()) && (e = bn()), e
                          }

                          function rt() {
                              var e, t, l, r, s, o, a;
                              if (s = u, o = u, "cause" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"cause"')), null !== e)
                                  if (null !== (t = U())) {
                                      if (null !== (r = c()))
                                          for (l = []; null !== r;) l.push(r), r = c();
                                      else l = null;
                                      null !== l ? e = [e, t, l] : (e = null, u = o)
                                  } else e = null, u = o;
                              else e = null, u = o;
                              return null !== e && (a = e[2], e = void(Ht.cause = parseInt(a.join("")))), null === e && (u = s), e
                          }

                          function ut() {
                              var e, n, t, l, r, s;
                              if (r = u, null !== (e = mn())) {
                                  for (n = [], s = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = s);
                                  null !== n ? e = [e, n] : (e = null, u = r)
                              } else e = null, u = r;
                              return e
                          }

                          function st() {
                              var e, t;
                              return t = u, "active" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"active"')), null === e && ("pending" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"pending"')), null === e && ("terminated" === n.substr(u, 10).toLowerCase() ? (e = n.substr(u, 10), u += 10) : (e = null, i('"terminated"')), null === e && (e = N()))), null !== e && (e = function(e) {
                                  Ht.state = n.substring(u, e)
                              }(t)), null === e && (u = t), e
                          }

                          function ot() {
                              var e, t, l, r, s, o, a, c;
                              return r = u, s = u, "reason" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"reason"')), null !== e && null !== (t = U()) && null !== (l = it()) ? e = [e, t, l] : (e = null, u = s), null !== e && (e = void(void 0 !== (o = e[2]) && (Ht.reason = o))), null === e && (u = r), null === e && (r = u, s = u, "expires" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"expires"')), null !== e && null !== (t = U()) && null !== (l = Tn()) ? e = [e, t, l] : (e = null, u = s), null !== e && (e = void(void 0 !== (c = e[2]) && (Ht.expires = c))), null === e && (u = r), null === e && (r = u, s = u, "retry_after" === n.substr(u, 11).toLowerCase() ? (e = n.substr(u, 11), u += 11) : (e = null, i('"retry_after"')), null !== e && null !== (t = U()) && null !== (l = Tn()) ? e = [e, t, l] : (e = null, u = s), null !== e && (e = void(void 0 !== (a = e[2]) && (Ht.retry_after = a))), null === e && (u = r), null === e && (e = bn()))), e
                          }

                          function it() {
                              var e;
                              return "deactivated" === n.substr(u, 11).toLowerCase() ? (e = n.substr(u, 11), u += 11) : (e = null, i('"deactivated"')), null === e && ("probation" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"probation"')), null === e && ("rejected" === n.substr(u, 8).toLowerCase() ? (e = n.substr(u, 8), u += 8) : (e = null, i('"rejected"')), null === e && ("timeout" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"timeout"')), null === e && ("giveup" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"giveup"')), null === e && ("noresource" === n.substr(u, 10).toLowerCase() ? (e = n.substr(u, 10), u += 10) : (e = null, i('"noresource"')), null === e && ("invariant" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"invariant"')), null === e && (e = N()))))))), e
                          }

                          function at() {
                              var e;
                              return null === (e = Hn()) && (e = bn()), e
                          }

                          function ct() {
                              var e, n, t, l, r, s, o, i;
                              if (o = u, null !== (e = gt()))
                                  if (null !== (n = b()))
                                      if (null !== (t = Tt())) {
                                          for (l = [], i = u, null !== (r = j()) && null !== (s = ht()) ? r = [r, s] : (r = null, u = i); null !== r;) l.push(r), i = u, null !== (r = j()) && null !== (s = ht()) ? r = [r, s] : (r = null, u = i);
                                          null !== l ? e = [e, n, t, l] : (e = null, u = o)
                                      } else e = null, u = o;
                              else e = null, u = o;
                              else e = null, u = o;
                              return e
                          }

                          function ht() {
                              var e;
                              return null === (e = dt()) && null === (e = ft()) && null === (e = _t()) && null === (e = pt()) && null === (e = mt()) && (e = bn()), e
                          }

                          function dt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "ttl" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"ttl"')), null !== e && null !== (t = U()) && null !== (l = Et()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.ttl = o)), null === e && (u = r), e
                          }

                          function ft() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "maddr" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"maddr"')), null !== e && null !== (t = U()) && null !== (l = se()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.maddr = o)), null === e && (u = r), e
                          }

                          function _t() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "received" === n.substr(u, 8).toLowerCase() ? (e = n.substr(u, 8), u += 8) : (e = null, i('"received"')), null !== e && null !== (t = U()) ? (null === (l = _e()) && (l = he()), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.received = o)), null === e && (u = r), e
                          }

                          function pt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "branch" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"branch"')), null !== e && null !== (t = U()) && null !== (l = N()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.branch = o)), null === e && (u = r), e
                          }

                          function mt() {
                              var e, t, l, r, s;
                              return r = u, "rport" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"rport"')), null !== e ? (s = u, null !== (t = U()) && null !== (l = vt()) ? t = [t, l] : (t = null, u = s), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function vt() {
                              var e, n, t, l, r, s, o, i;
                              return s = u, o = u, null !== (e = null !== (e = c()) ? e : "") && null !== (n = null !== (n = c()) ? n : "") && null !== (t = null !== (t = c()) ? t : "") && null !== (l = null !== (l = c()) ? l : "") && null !== (r = null !== (r = c()) ? r : "") ? e = [e, n, t, l, r] : (e = null, u = o), null !== e && (i = e, e = void(Ht.rport = parseInt(i.join("")))), null === e && (u = s), e
                          }

                          function gt() {
                              var e, n, t, l, r, s;
                              return s = u, null !== (e = yt()) && null !== (n = P()) && null !== (t = N()) && null !== (l = P()) && null !== (r = Ct()) ? e = [e, n, t, l, r] : (e = null, u = s), e
                          }

                          function yt() {
                              var e, t, l;
                              return t = u, "sip" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"SIP"')), null === e && (e = N()), null !== e && (l = e, e = void(Ht.protocol = l)), null === e && (u = t), e
                          }

                          function Ct() {
                              var e, t, l;
                              return t = u, "udp" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"UDP"')), null === e && ("tcp" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"TCP"')), null === e && ("tls" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"TLS"')), null === e && ("sctp" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"SCTP"')), null === e && (e = N())))), null !== e && (l = e, e = void(Ht.transport = l)), null === e && (u = t), e
                          }

                          function Tt() {
                              var e, n, t, l, r;
                              return l = u, null !== (e = At()) ? (r = u, null !== (n = G()) && null !== (t = bt()) ? n = [n, t] : (n = null, u = r), null !== (n = null !== n ? n : "") ? e = [e, n] : (e = null, u = l)) : (e = null, u = l), e
                          }

                          function At() {
                              var e, t;
                              return t = u, null === (e = _e()) && null === (e = ce()) && (e = oe()), null !== e && (e = function(e) {
                                  Ht.host = n.substring(u, e)
                              }(t)), null === e && (u = t), e
                          }

                          function bt() {
                              var e, n, t, l, r, s, o, i;
                              return s = u, o = u, null !== (e = null !== (e = c()) ? e : "") && null !== (n = null !== (n = c()) ? n : "") && null !== (t = null !== (t = c()) ? t : "") && null !== (l = null !== (l = c()) ? l : "") && null !== (r = null !== (r = c()) ? r : "") ? e = [e, n, t, l, r] : (e = null, u = o), null !== e && (i = e, e = void(Ht.port = parseInt(i.join("")))), null === e && (u = s), e
                          }

                          function Et() {
                              var e, n, t, l, r;
                              return l = u, r = u, null !== (e = c()) && null !== (n = null !== (n = c()) ? n : "") && null !== (t = null !== (t = c()) ? t : "") ? e = [e, n, t] : (e = null, u = r), null !== e && (e = parseInt(e.join(""))), null === e && (u = l), e
                          }

                          function St() {
                              var e, n, t;
                              return n = u, null !== (e = Tn()) && (t = e, e = void(Ht.expires = t)), null === e && (u = n), e
                          }

                          function Rt() {
                              var e;
                              return null === (e = wt()) && (e = bn()), e
                          }

                          function wt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "refresher" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"refresher"')), null !== e && null !== (t = U()) ? ("uac" === n.substr(u, 3).toLowerCase() ? (l = n.substr(u, 3), u += 3) : (l = null, i('"uac"')), null === l && ("uas" === n.substr(u, 3).toLowerCase() ? (l = n.substr(u, 3), u += 3) : (l = null, i('"uas"'))), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.refresher = o.toLowerCase())), null === e && (u = r), e
                          }

                          function It() {
                              var e, n;
                              for (e = [], null === (n = w()) && null === (n = O()) && (n = b()); null !== n;) e.push(n), null === (n = w()) && null === (n = O()) && (n = b());
                              return e
                          }

                          function Ot() {
                              var e, t, l, r, s, o, a, c, h, d, f;
                              return d = u, f = u, null !== (e = kt()) ? (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null !== t && null !== (l = Nt()) ? (45 === n.charCodeAt(u) ? (r = "-", u++) : (r = null, i('"-"')), null !== r && null !== (s = Nt()) ? (45 === n.charCodeAt(u) ? (o = "-", u++) : (o = null, i('"-"')), null !== o && null !== (a = Nt()) ? (45 === n.charCodeAt(u) ? (c = "-", u++) : (c = null, i('"-"')), null !== c && null !== (h = xt()) ? e = [e, t, l, r, s, o, a, c, h] : (e = null, u = f)) : (e = null, u = f)) : (e = null, u = f)) : (e = null, u = f)) : (e = null, u = f), null !== e && (e = function(e, t) {
                                  Ht = n.substring(u + 5, e)
                              }(d, e[0])), null === e && (u = d), e
                          }

                          function Nt() {
                              var e, n, t, l, r;
                              return r = u, null !== (e = d()) && null !== (n = d()) && null !== (t = d()) && null !== (l = d()) ? e = [e, n, t, l] : (e = null, u = r), e
                          }

                          function kt() {
                              var e, n, t;
                              return t = u, null !== (e = Nt()) && null !== (n = Nt()) ? e = [e, n] : (e = null, u = t), e
                          }

                          function xt() {
                              var e, n, t, l;
                              return l = u, null !== (e = Nt()) && null !== (n = Nt()) && null !== (t = Nt()) ? e = [e, n, t] : (e = null, u = l), e
                          }

                          function Dt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, null !== (e = x()) ? (o = u, 64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null !== t && null !== (l = x()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                  Ht.call_id = n.substring(u, e)
                              }(r)), null === e && (u = r), e
                          }

                          function Pt() {
                              var e;
                              return null === (e = Ut()) && null === (e = Lt()) && null === (e = qt()) && (e = bn()), e
                          }

                          function Ut() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "to-tag" === n.substr(u, 6) ? (e = "to-tag", u += 6) : (e = null, i('"to-tag"')), null !== e && null !== (t = U()) && null !== (l = N()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.to_tag = o)), null === e && (u = r), e
                          }

                          function Lt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "from-tag" === n.substr(u, 8) ? (e = "from-tag", u += 8) : (e = null, i('"from-tag"')), null !== e && null !== (t = U()) && null !== (l = N()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.from_tag = o)), null === e && (u = r), e
                          }

                          function qt() {
                              var e, t;
                              return t = u, "early-only" === n.substr(u, 10) ? (e = "early-only", u += 10) : (e = null, i('"early-only"')), null !== e && (e = void(Ht.early_only = !0)), null === e && (u = t), e
                          }
                          var Mt = t(987),
                              Ft = t(437),
                              Ht = {};
                          if (null === r[l]() || u !== n.length) {
                              var jt = Math.max(u, s),
                                  Gt = jt < n.length ? n.charAt(jt) : null,
                                  Bt = function() {
                                      for (var e = 1, t = 1, l = !1, r = 0; r < Math.max(u, s); r++) {
                                          var o = n.charAt(r);
                                          "\n" === o ? (l || e++, t = 1, l = !1) : "\r" === o || "\u2028" === o || "\u2029" === o ? (e++, t = 1, l = !0) : (t++, l = !1)
                                      }
                                      return {
                                          line: e,
                                          column: t
                                      }
                                  }();
                              return new this.SyntaxError(function(e) {
                                  e.sort();
                                  for (var n = null, t = [], l = 0; l < e.length; l++) e[l] !== n && (t.push(e[l]), n = e[l]);
                                  return t
                              }(o), Gt, jt, Bt.line, Bt.column), -1
                          }
                          return Ht
                      },
                      toSource: function() {
                          return this._source
                      },
                      SyntaxError: function(n, t, l, r, u) {
                          this.name = "SyntaxError", this.expected = n, this.found = t, this.message = function(n, t) {
                              var l;
                              switch (n.length) {
                                  case 0:
                                      l = "end of input";
                                      break;
                                  case 1:
                                      l = n[0];
                                      break;
                                  default:
                                      l = n.slice(0, n.length - 1).join(", ") + " or " + n[n.length - 1]
                              }
                              return "Expected " + l + " but " + (t ? e(t) : "end of input") + " found."
                          }(n, t), this.offset = l, this.line = r, this.column = u
                      }
                  };
                  return n.SyntaxError.prototype = Error.prototype, n
              }()
          },
          979: (e, n, t) => {
              "use strict";
              var l = t(403),
                  r = t(965),
                  u = t(63),
                  s = t(424),
                  o = t(387),
                  i = t(987),
                  a = t(437),
                  c = t(790),
                  h = t(288);
              t(272)("JsSIP")("version %s", l.version), e.exports = {
                  C: r,
                  Exceptions: u,
                  Utils: s,
                  UA: o,
                  URI: i,
                  NameAddrHeader: a,
                  WebSocketInterface: h,
                  Grammar: c,
                  debug: t(272),
                  get name() {
                      return l.title
                  },
                  get version() {
                      return l.version
                  }
              }
          },
          356: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }
              var r = t(272),
                  u = "JsSIP";
              e.exports = function() {
                  function e(n) {
                      ! function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, e), n ? (this._debug = r.default("".concat(u, ":").concat(n)), this._warn = r.default("".concat(u, ":WARN:").concat(n)), this._error = r.default("".concat(u, ":ERROR:").concat(n))) : (this._debug = r.default(u), this._warn = r.default("".concat(u, ":WARN")), this._error = r.default("".concat(u, ":ERROR"))), this._debug.log = console.info.bind(console), this._warn.log = console.warn.bind(console), this._error.log = console.error.bind(console)
                  }
                  var n, t;
                  return n = e, (t = [{
                      key: "debug",
                      get: function() {
                          return this._debug
                      }
                  }, {
                      key: "warn",
                      get: function() {
                          return this._warn
                      }
                  }, {
                      key: "error",
                      get: function() {
                          return this._error
                      }
                  }]) && l(n.prototype, t), e
              }()
          },
          193: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function u(e, n) {
                  return u = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, u(e, n)
              }

              function s(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? function(e) {
                      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                      return e
                  }(e) : n
              }

              function o(e) {
                  return o = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, o(e)
              }
              var i = t(187).EventEmitter,
                  a = t(356),
                  c = t(965),
                  h = t(497),
                  d = t(424),
                  f = t(66),
                  _ = t(63),
                  p = t(987),
                  m = new a("Message");
              e.exports = function(e) {
                  ! function(e, n) {
                      if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                      e.prototype = Object.create(n && n.prototype, {
                          constructor: {
                              value: e,
                              writable: !0,
                              configurable: !0
                          }
                      }), n && u(e, n)
                  }(v, e);
                  var n, t, l, i, a = (l = v, i = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }(), function() {
                      var e, n = o(l);
                      if (i) {
                          var t = o(this).constructor;
                          e = Reflect.construct(n, arguments, t)
                      } else e = n.apply(this, arguments);
                      return s(this, e)
                  });

                  function v(e) {
                      var n;
                      return function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, v), (n = a.call(this))._ua = e, n._request = null, n._closed = !1, n._direction = null, n._local_identity = null, n._remote_identity = null, n._is_replied = !1, n._data = {}, n
                  }
                  return n = v, t = [{
                      key: "send",
                      value: function(e, n) {
                          var t = this,
                              l = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                              r = e;
                          if (void 0 === e || void 0 === n) throw new TypeError("Not enough arguments");
                          if (!(e = this._ua.normalizeTarget(e))) throw new TypeError("Invalid target: ".concat(r));
                          var u = d.cloneArray(l.extraHeaders),
                              s = d.cloneObject(l.eventHandlers),
                              o = l.contentType || "text/plain",
                              i = {};
                          for (var a in l.fromUserName && (i.from_uri = new p("sip", l.fromUserName, this._ua.configuration.uri.host), u.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))), l.fromDisplayName && (i.from_display_name = l.fromDisplayName), s) Object.prototype.hasOwnProperty.call(s, a) && this.on(a, s[a]);
                          u.push("Content-Type: ".concat(o)), this._request = new h.OutgoingRequest(c.MESSAGE, e, this._ua, i, u), n && (this._request.body = n);
                          var _ = new f(this._ua, this._request, {
                              onRequestTimeout: function() {
                                  t._onRequestTimeout()
                              },
                              onTransportError: function() {
                                  t._onTransportError()
                              },
                              onReceiveResponse: function(e) {
                                  t._receiveResponse(e)
                              }
                          });
                          this._newMessage("local", this._request), _.send()
                      }
                  }, {
                      key: "init_incoming",
                      value: function(e) {
                          this._request = e, this._newMessage("remote", e), this._is_replied || (this._is_replied = !0, e.reply(200)), this._close()
                      }
                  }, {
                      key: "accept",
                      value: function() {
                          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                              n = d.cloneArray(e.extraHeaders),
                              t = e.body;
                          if ("incoming" !== this._direction) throw new _.NotSupportedError('"accept" not supported for outgoing Message');
                          if (this._is_replied) throw new Error("incoming Message already replied");
                          this._is_replied = !0, this._request.reply(200, null, n, t)
                      }
                  }, {
                      key: "reject",
                      value: function() {
                          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                              n = e.status_code || 480,
                              t = e.reason_phrase,
                              l = d.cloneArray(e.extraHeaders),
                              r = e.body;
                          if ("incoming" !== this._direction) throw new _.NotSupportedError('"reject" not supported for outgoing Message');
                          if (this._is_replied) throw new Error("incoming Message already replied");
                          if (n < 300 || n >= 700) throw new TypeError("Invalid status_code: ".concat(n));
                          this._is_replied = !0, this._request.reply(n, t, l, r)
                      }
                  }, {
                      key: "_receiveResponse",
                      value: function(e) {
                          if (!this._closed) switch (!0) {
                              case /^1[0-9]{2}$/.test(e.status_code):
                                  break;
                              case /^2[0-9]{2}$/.test(e.status_code):
                                  this._succeeded("remote", e);
                                  break;
                              default:
                                  var n = d.sipErrorCause(e.status_code);
                                  this._failed("remote", e, n)
                          }
                      }
                  }, {
                      key: "_onRequestTimeout",
                      value: function() {
                          this._closed || this._failed("system", null, c.causes.REQUEST_TIMEOUT)
                      }
                  }, {
                      key: "_onTransportError",
                      value: function() {
                          this._closed || this._failed("system", null, c.causes.CONNECTION_ERROR)
                      }
                  }, {
                      key: "_close",
                      value: function() {
                          this._closed = !0, this._ua.destroyMessage(this)
                      }
                  }, {
                      key: "_newMessage",
                      value: function(e, n) {
                          "remote" === e ? (this._direction = "incoming", this._local_identity = n.to, this._remote_identity = n.from) : "local" === e && (this._direction = "outgoing", this._local_identity = n.from, this._remote_identity = n.to), this._ua.newMessage(this, {
                              originator: e,
                              message: this,
                              request: n
                          })
                      }
                  }, {
                      key: "_failed",
                      value: function(e, n, t) {
                          m.debug("MESSAGE failed"), this._close(), m.debug('emit "failed"'), this.emit("failed", {
                              originator: e,
                              response: n || null,
                              cause: t
                          })
                      }
                  }, {
                      key: "_succeeded",
                      value: function(e, n) {
                          m.debug("MESSAGE succeeded"), this._close(), m.debug('emit "succeeded"'), this.emit("succeeded", {
                              originator: e,
                              response: n
                          })
                      }
                  }, {
                      key: "direction",
                      get: function() {
                          return this._direction
                      }
                  }, {
                      key: "local_identity",
                      get: function() {
                          return this._local_identity
                      }
                  }, {
                      key: "remote_identity",
                      get: function() {
                          return this._remote_identity
                      }
                  }], t && r(n.prototype, t), v
              }(i)
          },
          437: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function r(e, n, t) {
                  return n && l(e.prototype, n), t && l(e, t), e
              }
              var u = t(987),
                  s = t(790);
              e.exports = function() {
                  function e(n, t, l) {
                      if (function(e, n) {
                              if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                          }(this, e), !(n && n instanceof u)) throw new TypeError('missing or invalid "uri" parameter');
                      for (var r in this._uri = n, this._parameters = {}, this.display_name = t, l) Object.prototype.hasOwnProperty.call(l, r) && this.setParam(r, l[r])
                  }
                  return r(e, null, [{
                      key: "parse",
                      value: function(e) {
                          return -1 !== (e = s.parse(e, "Name_Addr_Header")) ? e : void 0
                      }
                  }]), r(e, [{
                      key: "setParam",
                      value: function(e, n) {
                          e && (this._parameters[e.toLowerCase()] = null == n ? null : n.toString())
                      }
                  }, {
                      key: "getParam",
                      value: function(e) {
                          if (e) return this._parameters[e.toLowerCase()]
                      }
                  }, {
                      key: "hasParam",
                      value: function(e) {
                          if (e) return !!this._parameters.hasOwnProperty(e.toLowerCase())
                      }
                  }, {
                      key: "deleteParam",
                      value: function(e) {
                          if (e = e.toLowerCase(), this._parameters.hasOwnProperty(e)) {
                              var n = this._parameters[e];
                              return delete this._parameters[e], n
                          }
                      }
                  }, {
                      key: "clearParams",
                      value: function() {
                          this._parameters = {}
                      }
                  }, {
                      key: "clone",
                      value: function() {
                          return new e(this._uri.clone(), this._display_name, JSON.parse(JSON.stringify(this._parameters)))
                      }
                  }, {
                      key: "_quote",
                      value: function(e) {
                          return e.replace(/\\/g, "\\\\").replace(/"/g, '\\"')
                      }
                  }, {
                      key: "toString",
                      value: function() {
                          var e = this._display_name ? '"'.concat(this._quote(this._display_name), '" ') : "";
                          for (var n in e += "<".concat(this._uri.toString(), ">"), this._parameters) Object.prototype.hasOwnProperty.call(this._parameters, n) && (e += ";".concat(n), null !== this._parameters[n] && (e += "=".concat(this._parameters[n])));
                          return e
                      }
                  }, {
                      key: "uri",
                      get: function() {
                          return this._uri
                      }
                  }, {
                      key: "display_name",
                      get: function() {
                          return this._display_name
                      },
                      set: function(e) {
                          this._display_name = 0 === e ? "0" : e
                      }
                  }]), e
              }()
          },
          782: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function u(e, n) {
                  return u = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, u(e, n)
              }

              function s(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? function(e) {
                      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                      return e
                  }(e) : n
              }

              function o(e) {
                  return o = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, o(e)
              }
              var i = t(187).EventEmitter,
                  a = t(356),
                  c = t(965),
                  h = t(497),
                  d = t(424),
                  f = t(66),
                  _ = t(63),
                  p = new a("Options");
              e.exports = function(e) {
                  ! function(e, n) {
                      if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                      e.prototype = Object.create(n && n.prototype, {
                          constructor: {
                              value: e,
                              writable: !0,
                              configurable: !0
                          }
                      }), n && u(e, n)
                  }(m, e);
                  var n, t, l, i, a = (l = m, i = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }(), function() {
                      var e, n = o(l);
                      if (i) {
                          var t = o(this).constructor;
                          e = Reflect.construct(n, arguments, t)
                      } else e = n.apply(this, arguments);
                      return s(this, e)
                  });

                  function m(e) {
                      var n;
                      return function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, m), (n = a.call(this))._ua = e, n._request = null, n._closed = !1, n._direction = null, n._local_identity = null, n._remote_identity = null, n._is_replied = !1, n._data = {}, n
                  }
                  return n = m, t = [{
                      key: "send",
                      value: function(e, n) {
                          var t = this,
                              l = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                              r = e;
                          if (void 0 === e) throw new TypeError("A target is required for OPTIONS");
                          if (!(e = this._ua.normalizeTarget(e))) throw new TypeError("Invalid target: ".concat(r));
                          var u = d.cloneArray(l.extraHeaders),
                              s = d.cloneObject(l.eventHandlers),
                              o = l.contentType || "application/sdp";
                          for (var i in s) Object.prototype.hasOwnProperty.call(s, i) && this.on(i, s[i]);
                          u.push("Content-Type: ".concat(o)), this._request = new h.OutgoingRequest(c.OPTIONS, e, this._ua, null, u), n && (this._request.body = n);
                          var a = new f(this._ua, this._request, {
                              onRequestTimeout: function() {
                                  t._onRequestTimeout()
                              },
                              onTransportError: function() {
                                  t._onTransportError()
                              },
                              onReceiveResponse: function(e) {
                                  t._receiveResponse(e)
                              }
                          });
                          this._newOptions("local", this._request), a.send()
                      }
                  }, {
                      key: "init_incoming",
                      value: function(e) {
                          this._request = e, this._newOptions("remote", e), this._is_replied || (this._is_replied = !0, e.reply(200)), this._close()
                      }
                  }, {
                      key: "accept",
                      value: function() {
                          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                              n = d.cloneArray(e.extraHeaders),
                              t = e.body;
                          if ("incoming" !== this._direction) throw new _.NotSupportedError('"accept" not supported for outgoing Options');
                          if (this._is_replied) throw new Error("incoming Options already replied");
                          this._is_replied = !0, this._request.reply(200, null, n, t)
                      }
                  }, {
                      key: "reject",
                      value: function() {
                          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                              n = e.status_code || 480,
                              t = e.reason_phrase,
                              l = d.cloneArray(e.extraHeaders),
                              r = e.body;
                          if ("incoming" !== this._direction) throw new _.NotSupportedError('"reject" not supported for outgoing Options');
                          if (this._is_replied) throw new Error("incoming Options already replied");
                          if (n < 300 || n >= 700) throw new TypeError("Invalid status_code: ".concat(n));
                          this._is_replied = !0, this._request.reply(n, t, l, r)
                      }
                  }, {
                      key: "_receiveResponse",
                      value: function(e) {
                          if (!this._closed) switch (!0) {
                              case /^1[0-9]{2}$/.test(e.status_code):
                                  break;
                              case /^2[0-9]{2}$/.test(e.status_code):
                                  this._succeeded("remote", e);
                                  break;
                              default:
                                  var n = d.sipErrorCause(e.status_code);
                                  this._failed("remote", e, n)
                          }
                      }
                  }, {
                      key: "_onRequestTimeout",
                      value: function() {
                          this._closed || this._failed("system", null, c.causes.REQUEST_TIMEOUT)
                      }
                  }, {
                      key: "_onTransportError",
                      value: function() {
                          this._closed || this._failed("system", null, c.causes.CONNECTION_ERROR)
                      }
                  }, {
                      key: "_close",
                      value: function() {
                          this._closed = !0, this._ua.destroyMessage(this)
                      }
                  }, {
                      key: "_newOptions",
                      value: function(e, n) {
                          "remote" === e ? (this._direction = "incoming", this._local_identity = n.to, this._remote_identity = n.from) : "local" === e && (this._direction = "outgoing", this._local_identity = n.from, this._remote_identity = n.to), this._ua.newOptions(this, {
                              originator: e,
                              message: this,
                              request: n
                          })
                      }
                  }, {
                      key: "_failed",
                      value: function(e, n, t) {
                          p.debug("OPTIONS failed"), this._close(), p.debug('emit "failed"'), this.emit("failed", {
                              originator: e,
                              response: n || null,
                              cause: t
                          })
                      }
                  }, {
                      key: "_succeeded",
                      value: function(e, n) {
                          p.debug("OPTIONS succeeded"), this._close(), p.debug('emit "succeeded"'), this.emit("succeeded", {
                              originator: e,
                              response: n
                          })
                      }
                  }, {
                      key: "direction",
                      get: function() {
                          return this._direction
                      }
                  }, {
                      key: "local_identity",
                      get: function() {
                          return this._local_identity
                      }
                  }, {
                      key: "remote_identity",
                      get: function() {
                          return this._remote_identity
                      }
                  }], t && r(n.prototype, t), m
              }(i)
          },
          407: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  var t;
                  if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                      if (Array.isArray(e) || (t = function(e, n) {
                              if (e) {
                                  if ("string" == typeof e) return r(e, n);
                                  var t = Object.prototype.toString.call(e).slice(8, -1);
                                  return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? r(e, n) : void 0
                              }
                          }(e)) || n && e && "number" == typeof e.length) {
                          t && (e = t);
                          var l = 0,
                              u = function() {};
                          return {
                              s: u,
                              n: function() {
                                  return l >= e.length ? {
                                      done: !0
                                  } : {
                                      done: !1,
                                      value: e[l++]
                                  }
                              },
                              e: function(e) {
                                  throw e
                              },
                              f: u
                          }
                      }
                      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                  }
                  var s, o = !0,
                      i = !1;
                  return {
                      s: function() {
                          t = e[Symbol.iterator]()
                      },
                      n: function() {
                          var e = t.next();
                          return o = e.done, e
                      },
                      e: function(e) {
                          i = !0, s = e
                      },
                      f: function() {
                          try {
                              o || null == t.return || t.return()
                          } finally {
                              if (i) throw s
                          }
                      }
                  }
              }

              function r(e, n) {
                  (null == n || n > e.length) && (n = e.length);
                  for (var t = 0, l = new Array(n); t < n; t++) l[t] = e[t];
                  return l
              }
              var u = t(356),
                  s = t(790),
                  o = t(497),
                  i = new u("Parser");

              function a(e, n) {
                  var t = n,
                      l = 0,
                      r = 0;
                  if (e.substring(t, t + 2).match(/(^\r\n)/)) return -2;
                  for (; 0 === l;) {
                      if (-1 === (r = e.indexOf("\r\n", t))) return r;
                      !e.substring(r + 2, r + 4).match(/(^\r\n)/) && e.charAt(r + 2).match(/(^\s+)/) ? t = r + 2 : l = r
                  }
                  return l
              }

              function c(e, n, t, r) {
                  var u, i = n.indexOf(":", t),
                      a = n.substring(t, i).trim(),
                      c = n.substring(i + 1, r).trim();
                  switch (a.toLowerCase()) {
                      case "via":
                      case "v":
                          e.addHeader("via", c), 1 === e.getHeaders("via").length ? (u = e.parseHeader("Via")) && (e.via = u, e.via_branch = u.branch) : u = 0;
                          break;
                      case "from":
                      case "f":
                          e.setHeader("from", c), (u = e.parseHeader("from")) && (e.from = u, e.from_tag = u.getParam("tag"));
                          break;
                      case "to":
                      case "t":
                          e.setHeader("to", c), (u = e.parseHeader("to")) && (e.to = u, e.to_tag = u.getParam("tag"));
                          break;
                      case "record-route":
                          if (-1 === (u = s.parse(c, "Record_Route"))) u = void 0;
                          else {
                              var h, d = l(u);
                              try {
                                  for (d.s(); !(h = d.n()).done;) {
                                      var f = h.value;
                                      e.addHeader("record-route", c.substring(f.possition, f.offset)), e.headers["Record-Route"][e.getHeaders("record-route").length - 1].parsed = f.parsed
                                  }
                              } catch (e) {
                                  d.e(e)
                              } finally {
                                  d.f()
                              }
                          }
                          break;
                      case "call-id":
                      case "i":
                          e.setHeader("call-id", c), (u = e.parseHeader("call-id")) && (e.call_id = c);
                          break;
                      case "contact":
                      case "m":
                          if (-1 === (u = s.parse(c, "Contact"))) u = void 0;
                          else {
                              var _, p = l(u);
                              try {
                                  for (p.s(); !(_ = p.n()).done;) {
                                      var m = _.value;
                                      e.addHeader("contact", c.substring(m.possition, m.offset)), e.headers.Contact[e.getHeaders("contact").length - 1].parsed = m.parsed
                                  }
                              } catch (e) {
                                  p.e(e)
                              } finally {
                                  p.f()
                              }
                          }
                          break;
                      case "content-length":
                      case "l":
                          e.setHeader("content-length", c), u = e.parseHeader("content-length");
                          break;
                      case "content-type":
                      case "c":
                          e.setHeader("content-type", c), u = e.parseHeader("content-type");
                          break;
                      case "cseq":
                          e.setHeader("cseq", c), (u = e.parseHeader("cseq")) && (e.cseq = u.value), e instanceof o.IncomingResponse && (e.method = u.method);
                          break;
                      case "max-forwards":
                          e.setHeader("max-forwards", c), u = e.parseHeader("max-forwards");
                          break;
                      case "www-authenticate":
                          e.setHeader("www-authenticate", c), u = e.parseHeader("www-authenticate");
                          break;
                      case "proxy-authenticate":
                          e.setHeader("proxy-authenticate", c), u = e.parseHeader("proxy-authenticate");
                          break;
                      case "session-expires":
                      case "x":
                          e.setHeader("session-expires", c), (u = e.parseHeader("session-expires")) && (e.session_expires = u.expires, e.session_expires_refresher = u.refresher);
                          break;
                      case "refer-to":
                      case "r":
                          e.setHeader("refer-to", c), (u = e.parseHeader("refer-to")) && (e.refer_to = u);
                          break;
                      case "replaces":
                          e.setHeader("replaces", c), (u = e.parseHeader("replaces")) && (e.replaces = u);
                          break;
                      case "event":
                      case "o":
                          e.setHeader("event", c), (u = e.parseHeader("event")) && (e.event = u);
                          break;
                      default:
                          e.addHeader(a, c), u = 0
                  }
                  return void 0 !== u || {
                      error: 'error parsing header "'.concat(a, '"')
                  }
              }
              n.parseMessage = function(e, n) {
                  var t, l, r = e.indexOf("\r\n");
                  if (-1 !== r) {
                      var u = e.substring(0, r),
                          h = s.parse(u, "Request_Response");
                      if (-1 !== h) {
                          h.status_code ? ((t = new o.IncomingResponse).status_code = h.status_code, t.reason_phrase = h.reason_phrase) : ((t = new o.IncomingRequest(n)).method = h.method, t.ruri = h.uri), t.data = e;
                          for (var d = r + 2;;) {
                              if (-2 === (r = a(e, d))) {
                                  l = d + 2;
                                  break
                              }
                              if (-1 === r) return void i.warn("parseMessage() | malformed message");
                              if (!0 !== (h = c(t, e, d, r))) return void i.warn("parseMessage() |", h.error);
                              d = r + 2
                          }
                          if (t.hasHeader("content-length")) {
                              var f = t.getHeader("content-length");
                              t.body = e.substr(l, f)
                          } else t.body = e.substring(l);
                          return t
                      }
                      i.warn('parseMessage() | error parsing first line of SIP message: "'.concat(u, '"'))
                  } else i.warn("parseMessage() | no CRLF found, not a SIP message")
              }
          },
          906: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  var t;
                  if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                      if (Array.isArray(e) || (t = function(e, n) {
                              if (e) {
                                  if ("string" == typeof e) return u(e, n);
                                  var t = Object.prototype.toString.call(e).slice(8, -1);
                                  return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? u(e, n) : void 0
                              }
                          }(e)) || n && e && "number" == typeof e.length) {
                          t && (e = t);
                          var l = 0,
                              r = function() {};
                          return {
                              s: r,
                              n: function() {
                                  return l >= e.length ? {
                                      done: !0
                                  } : {
                                      done: !1,
                                      value: e[l++]
                                  }
                              },
                              e: function(e) {
                                  throw e
                              },
                              f: r
                          }
                      }
                      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                  }
                  var s, o = !0,
                      i = !1;
                  return {
                      s: function() {
                          t = e[Symbol.iterator]()
                      },
                      n: function() {
                          var e = t.next();
                          return o = e.done, e
                      },
                      e: function(e) {
                          i = !0, s = e
                      },
                      f: function() {
                          try {
                              o || null == t.return || t.return()
                          } finally {
                              if (i) throw s
                          }
                      }
                  }
              }

              function u(e, n) {
                  (null == n || n > e.length) && (n = e.length);
                  for (var t = 0, l = new Array(n); t < n; t++) l[t] = e[t];
                  return l
              }

              function s(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function o(e, n, t) {
                  return n && s(e.prototype, n), t && s(e, t), e
              }

              function i(e, n) {
                  return i = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, i(e, n)
              }

              function a(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? function(e) {
                      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                      return e
                  }(e) : n
              }

              function c(e) {
                  return c = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, c(e)
              }
              var h = t(187).EventEmitter,
                  d = t(766),
                  f = t(356),
                  _ = t(965),
                  p = t(63),
                  m = t(754),
                  v = t(424),
                  g = t(306),
                  y = t(497),
                  C = t(316),
                  T = t(66),
                  A = t(481),
                  b = t(126),
                  E = t(774),
                  S = t(603),
                  R = t(987),
                  w = new f("RTCSession"),
                  I = {
                      STATUS_NULL: 0,
                      STATUS_INVITE_SENT: 1,
                      STATUS_1XX_RECEIVED: 2,
                      STATUS_INVITE_RECEIVED: 3,
                      STATUS_WAITING_FOR_ANSWER: 4,
                      STATUS_ANSWERED: 5,
                      STATUS_WAITING_FOR_ACK: 6,
                      STATUS_CANCELED: 7,
                      STATUS_TERMINATED: 8,
                      STATUS_CONFIRMED: 9
                  },
                  O = ["audio", "video"];
              e.exports = function(e) {
                  ! function(e, n) {
                      if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                      e.prototype = Object.create(n && n.prototype, {
                          constructor: {
                              value: e,
                              writable: !0,
                              configurable: !0
                          }
                      }), n && i(e, n)
                  }(u, e);
                  var n, t, l = (n = u, t = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }(), function() {
                      var e, l = c(n);
                      if (t) {
                          var r = c(this).constructor;
                          e = Reflect.construct(l, arguments, r)
                      } else e = l.apply(this, arguments);
                      return a(this, e)
                  });

                  function u(e) {
                      var n;
                      return function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, u), w.debug("new"), (n = l.call(this))._id = null, n._ua = e, n._status = I.STATUS_NULL, n._dialog = null, n._earlyDialogs = {}, n._contact = null, n._from_tag = null, n._to_tag = null, n._connection = null, n._connectionPromiseQueue = Promise.resolve(), n._request = null, n._is_canceled = !1, n._cancel_reason = "", n._is_confirmed = !1, n._late_sdp = !1, n._rtcOfferConstraints = null, n._rtcAnswerConstraints = null, n._localMediaStream = null, n._localMediaStreamLocallyGenerated = !1, n._rtcReady = !0, n._iceReady = !1, n._timers = {
                          ackTimer: null,
                          expiresTimer: null,
                          invite2xxTimer: null,
                          userNoAnswerTimer: null
                      }, n._direction = null, n._local_identity = null, n._remote_identity = null, n._start_time = null, n._end_time = null, n._tones = null, n._audioMuted = !1, n._videoMuted = !1, n._localHold = !1, n._remoteHold = !1, n._sessionTimers = {
                          enabled: n._ua.configuration.session_timers,
                          refreshMethod: n._ua.configuration.session_timers_refresh_method,
                          defaultExpires: _.SESSION_EXPIRES,
                          currentExpires: null,
                          running: !1,
                          refresher: !1,
                          timer: null
                      }, n._referSubscribers = {}, n._data = {}, n
                  }
                  return o(u, null, [{
                      key: "C",
                      get: function() {
                          return I
                      }
                  }]), o(u, [{
                      key: "isInProgress",
                      value: function() {
                          switch (this._status) {
                              case I.STATUS_NULL:
                              case I.STATUS_INVITE_SENT:
                              case I.STATUS_1XX_RECEIVED:
                              case I.STATUS_INVITE_RECEIVED:
                              case I.STATUS_WAITING_FOR_ANSWER:
                                  return !0;
                              default:
                                  return !1
                          }
                      }
                  }, {
                      key: "isEstablished",
                      value: function() {
                          switch (this._status) {
                              case I.STATUS_ANSWERED:
                              case I.STATUS_WAITING_FOR_ACK:
                              case I.STATUS_CONFIRMED:
                                  return !0;
                              default:
                                  return !1
                          }
                      }
                  }, {
                      key: "isEnded",
                      value: function() {
                          switch (this._status) {
                              case I.STATUS_CANCELED:
                              case I.STATUS_TERMINATED:
                                  return !0;
                              default:
                                  return !1
                          }
                      }
                  }, {
                      key: "isMuted",
                      value: function() {
                          return {
                              audio: this._audioMuted,
                              video: this._videoMuted
                          }
                      }
                  }, {
                      key: "isOnHold",
                      value: function() {
                          return {
                              local: this._localHold,
                              remote: this._remoteHold
                          }
                      }
                  }, {
                      key: "connect",
                      value: function(e) {
                          var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                              t = arguments.length > 2 ? arguments[2] : void 0;
                          w.debug("connect()");
                          var l = e,
                              r = v.cloneObject(n.eventHandlers),
                              u = v.cloneArray(n.extraHeaders),
                              s = v.cloneObject(n.mediaConstraints, {
                                  audio: !0,
                                  video: !0
                              }),
                              o = n.mediaStream || null,
                              i = v.cloneObject(n.pcConfig, {
                                  iceServers: []
                              }),
                              a = n.rtcConstraints || null,
                              c = n.rtcOfferConstraints || null;
                          if (this._rtcOfferConstraints = c, this._rtcAnswerConstraints = n.rtcAnswerConstraints || null, this._data = n.data || this._data, void 0 === e) throw new TypeError("Not enough arguments");
                          if (this._status !== I.STATUS_NULL) throw new p.InvalidStateError(this._status);
                          if (!window.RTCPeerConnection) throw new p.NotSupportedError("WebRTC not supported");
                          if (!(e = this._ua.normalizeTarget(e))) throw new TypeError("Invalid target: ".concat(l));
                          for (var h in this._sessionTimers.enabled && v.isDecimal(n.sessionTimersExpires) && (n.sessionTimersExpires >= _.MIN_SESSION_EXPIRES ? this._sessionTimers.defaultExpires = n.sessionTimersExpires : this._sessionTimers.defaultExpires = _.SESSION_EXPIRES), r) Object.prototype.hasOwnProperty.call(r, h) && this.on(h, r[h]);
                          this._from_tag = v.newTag();
                          var d = n.anonymous || !1,
                              f = {
                                  from_tag: this._from_tag
                              };
                          this._contact = this._ua.contact.toString({
                              anonymous: d,
                              outbound: !0
                          }), d ? (f.from_display_name = "Anonymous", f.from_uri = new R("sip", "anonymous", "anonymous.invalid"), u.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString())), u.push("Privacy: id")) : n.fromUserName && (f.from_uri = new R("sip", n.fromUserName, this._ua.configuration.uri.host), u.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))), n.fromDisplayName && (f.from_display_name = n.fromDisplayName), u.push("Contact: ".concat(this._contact)), u.push("Content-Type: application/sdp"), this._sessionTimers.enabled && u.push("Session-Expires: ".concat(this._sessionTimers.defaultExpires).concat(this._ua.configuration.session_timers_force_refresher ? ";refresher=uac" : "")), this._request = new y.InitialOutgoingInviteRequest(e, this._ua, f, u), this._id = this._request.call_id + this._from_tag, this._createRTCConnection(i, a), this._direction = "outgoing", this._local_identity = this._request.from, this._remote_identity = this._request.to, t && t(this), this._newRTCSession("local", this._request), this._sendInitialRequest(s, c, o)
                      }
                  }, {
                      key: "init_incoming",
                      value: function(e, n) {
                          var t, l = this;
                          w.debug("init_incoming()");
                          var r = e.hasHeader("Content-Type") ? e.getHeader("Content-Type").toLowerCase() : void 0;
                          e.body && "application/sdp" !== r ? e.reply(415) : (this._status = I.STATUS_INVITE_RECEIVED, this._from_tag = e.from_tag, this._id = e.call_id + this._from_tag, this._request = e, this._contact = this._ua.contact.toString(), e.hasHeader("expires") && (t = 1e3 * e.getHeader("expires")), e.to_tag = v.newTag(), this._createDialog(e, "UAS", !0) ? (e.body ? this._late_sdp = !1 : this._late_sdp = !0, this._status = I.STATUS_WAITING_FOR_ANSWER, this._timers.userNoAnswerTimer = setTimeout((function() {
                              e.reply(408), l._failed("local", null, _.causes.NO_ANSWER)
                          }), this._ua.configuration.no_answer_timeout), t && (this._timers.expiresTimer = setTimeout((function() {
                              l._status === I.STATUS_WAITING_FOR_ANSWER && (e.reply(487), l._failed("system", null, _.causes.EXPIRES))
                          }), t)), this._direction = "incoming", this._local_identity = e.to, this._remote_identity = e.from, n && n(this), this._newRTCSession("remote", e), this._status !== I.STATUS_TERMINATED && (e.reply(180, null, ["Contact: ".concat(this._contact)]), this._progress("local", null))) : e.reply(500, "Missing Contact header field"))
                      }
                  }, {
                      key: "answer",
                      value: function() {
                          var e = this,
                              n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                          w.debug("answer()");
                          var t = this._request,
                              l = v.cloneArray(n.extraHeaders),
                              u = v.cloneObject(n.mediaConstraints),
                              s = n.mediaStream || null,
                              o = v.cloneObject(n.pcConfig, {
                                  iceServers: []
                              }),
                              i = n.rtcConstraints || null,
                              a = n.rtcAnswerConstraints || null,
                              c = v.cloneObject(n.rtcOfferConstraints),
                              h = !1,
                              d = !1,
                              f = !1,
                              m = !1;
                          if (this._rtcAnswerConstraints = a, this._rtcOfferConstraints = n.rtcOfferConstraints || null, this._data = n.data || this._data, "incoming" !== this._direction) throw new p.NotSupportedError('"answer" not supported for outgoing RTCSession');
                          if (this._status !== I.STATUS_WAITING_FOR_ANSWER) throw new p.InvalidStateError(this._status);
                          if (this._sessionTimers.enabled && v.isDecimal(n.sessionTimersExpires) && (n.sessionTimersExpires >= _.MIN_SESSION_EXPIRES ? this._sessionTimers.defaultExpires = n.sessionTimersExpires : this._sessionTimers.defaultExpires = _.SESSION_EXPIRES), this._status = I.STATUS_ANSWERED, this._createDialog(t, "UAS")) {
                              clearTimeout(this._timers.userNoAnswerTimer), l.unshift("Contact: ".concat(this._contact));
                              var g = t.parseSDP();
                              Array.isArray(g.media) || (g.media = [g.media]);
                              var y, C = r(g.media);
                              try {
                                  for (C.s(); !(y = C.n()).done;) {
                                      var T = y.value;
                                      "audio" === T.type && (h = !0, T.direction && "sendrecv" !== T.direction || (f = !0)), "video" === T.type && (d = !0, T.direction && "sendrecv" !== T.direction || (m = !0))
                                  }
                              } catch (e) {
                                  C.e(e)
                              } finally {
                                  C.f()
                              }
                              if (s && !1 === u.audio) {
                                  var A, b = r(s.getAudioTracks());
                                  try {
                                      for (b.s(); !(A = b.n()).done;) {
                                          var E = A.value;
                                          s.removeTrack(E)
                                      }
                                  } catch (e) {
                                      b.e(e)
                                  } finally {
                                      b.f()
                                  }
                              }
                              if (s && !1 === u.video) {
                                  var S, R = r(s.getVideoTracks());
                                  try {
                                      for (R.s(); !(S = R.n()).done;) {
                                          var O = S.value;
                                          s.removeTrack(O)
                                      }
                                  } catch (e) {
                                      R.e(e)
                                  } finally {
                                      R.f()
                                  }
                              }
                              s || void 0 !== u.audio || (u.audio = f), s || void 0 !== u.video || (u.video = m), s || h || c.offerToReceiveAudio || (u.audio = !1), s || d || c.offerToReceiveVideo || (u.video = !1), this._createRTCConnection(o, i), Promise.resolve().then((function() {
                                  return s || (u.audio || u.video ? (e._localMediaStreamLocallyGenerated = !0, navigator.mediaDevices.getUserMedia(u).catch((function(n) {
                                      if (e._status === I.STATUS_TERMINATED) throw new Error("terminated");
                                      throw t.reply(480), e._failed("local", null, _.causes.USER_DENIED_MEDIA_ACCESS), w.warn('emit "getusermediafailed" [error:%o]', n), e.emit("getusermediafailed", n), new Error("getUserMedia() failed")
                                  }))) : void 0)
                              })).then((function(n) {
                                  if (e._status === I.STATUS_TERMINATED) throw new Error("terminated");
                                  e._localMediaStream = n, n && n.getTracks().forEach((function(t) {
                                      e._connection.addTrack(t, n)
                                  }))
                              })).then((function() {
                                  if (!e._late_sdp) {
                                      var n = {
                                          originator: "remote",
                                          type: "offer",
                                          sdp: t.body
                                      };
                                      w.debug('emit "sdp"'), e.emit("sdp", n);
                                      var l = new RTCSessionDescription({
                                          type: "offer",
                                          sdp: n.sdp
                                      });
                                      return e._connectionPromiseQueue = e._connectionPromiseQueue.then((function() {
                                          return e._connection.setRemoteDescription(l)
                                      })).catch((function(n) {
                                          throw t.reply(488), e._failed("system", null, _.causes.WEBRTC_ERROR), w.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]', n), e.emit("peerconnection:setremotedescriptionfailed", n), new Error("peerconnection.setRemoteDescription() failed")
                                      })), e._connectionPromiseQueue
                                  }
                              })).then((function() {
                                  if (e._status === I.STATUS_TERMINATED) throw new Error("terminated");
                                  return e._connecting(t), e._late_sdp ? e._createLocalDescription("offer", e._rtcOfferConstraints).catch((function() {
                                      throw t.reply(500), new Error("_createLocalDescription() failed")
                                  })) : e._createLocalDescription("answer", a).catch((function() {
                                      throw t.reply(500), new Error("_createLocalDescription() failed")
                                  }))
                              })).then((function(n) {
                                  if (e._status === I.STATUS_TERMINATED) throw new Error("terminated");
                                  e._handleSessionTimersInIncomingRequest(t, l), t.reply(200, null, l, n, (function() {
                                      e._status = I.STATUS_WAITING_FOR_ACK, e._setInvite2xxTimer(t, n), e._setACKTimer(), e._accepted("local")
                                  }), (function() {
                                      e._failed("system", null, _.causes.CONNECTION_ERROR)
                                  }))
                              })).catch((function(n) {
                                  e._status !== I.STATUS_TERMINATED && w.warn(n)
                              }))
                          } else t.reply(500, "Error creating dialog")
                      }
                  }, {
                      key: "terminate",
                      value: function() {
                          var e = this,
                              n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                          w.debug("terminate()");
                          var t, l = n.cause || _.causes.BYE,
                              r = v.cloneArray(n.extraHeaders),
                              u = n.body,
                              s = n.status_code,
                              o = n.reason_phrase;
                          if (this._status === I.STATUS_TERMINATED) throw new p.InvalidStateError(this._status);
                          switch (this._status) {
                              case I.STATUS_NULL:
                              case I.STATUS_INVITE_SENT:
                              case I.STATUS_1XX_RECEIVED:
                                  if (w.debug("canceling session"), s && (s < 200 || s >= 700)) throw new TypeError("Invalid status_code: ".concat(s));
                                  s && (o = o || _.REASON_PHRASE[s] || "", t = "SIP ;cause=".concat(s, ' ;text="').concat(o, '"')), this._status === I.STATUS_NULL || this._status === I.STATUS_INVITE_SENT ? (this._is_canceled = !0, this._cancel_reason = t) : this._status === I.STATUS_1XX_RECEIVED && this._request.cancel(t), this._status = I.STATUS_CANCELED, this._failed("local", null, _.causes.CANCELED);
                                  break;
                              case I.STATUS_WAITING_FOR_ANSWER:
                              case I.STATUS_ANSWERED:
                                  if (w.debug("rejecting session"), (s = s || 480) < 300 || s >= 700) throw new TypeError("Invalid status_code: ".concat(s));
                                  this._request.reply(s, o, r, u), this._failed("local", null, _.causes.REJECTED);
                                  break;
                              case I.STATUS_WAITING_FOR_ACK:
                              case I.STATUS_CONFIRMED:
                                  if (w.debug("terminating session"), o = n.reason_phrase || _.REASON_PHRASE[s] || "", s && (s < 200 || s >= 700)) throw new TypeError("Invalid status_code: ".concat(s));
                                  if (s && r.push("Reason: SIP ;cause=".concat(s, '; text="').concat(o, '"')), this._status === I.STATUS_WAITING_FOR_ACK && "incoming" === this._direction && this._request.server_transaction.state !== m.C.STATUS_TERMINATED) {
                                      var i = this._dialog;
                                      this.receiveRequest = function(n) {
                                          n.method === _.ACK && (e.sendRequest(_.BYE, {
                                              extraHeaders: r,
                                              body: u
                                          }), i.terminate())
                                      }, this._request.server_transaction.on("stateChanged", (function() {
                                          e._request.server_transaction.state === m.C.STATUS_TERMINATED && (e.sendRequest(_.BYE, {
                                              extraHeaders: r,
                                              body: u
                                          }), i.terminate())
                                      })), this._ended("local", null, l), this._dialog = i, this._ua.newDialog(i)
                                  } else this.sendRequest(_.BYE, {
                                      extraHeaders: r,
                                      body: u
                                  }), this._ended("local", null, l)
                          }
                      }
                  }, {
                      key: "sendDTMF",
                      value: function(e) {
                          var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                          w.debug("sendDTMF() | tones: %s", e);
                          var t = 0,
                              l = n.duration || null,
                              r = n.interToneGap || null,
                              u = n.transportType || _.DTMF_TRANSPORT.INFO;
                          if (void 0 === e) throw new TypeError("Not enough arguments");
                          if (this._status !== I.STATUS_CONFIRMED && this._status !== I.STATUS_WAITING_FOR_ACK && this._status !== I.STATUS_1XX_RECEIVED) throw new p.InvalidStateError(this._status);
                          if (u !== _.DTMF_TRANSPORT.INFO && u !== _.DTMF_TRANSPORT.RFC2833) throw new TypeError("invalid transportType: ".concat(u));
                          if ("number" == typeof e && (e = e.toString()), !e || "string" != typeof e || !e.match(/^[0-9A-DR#*,]+$/i)) throw new TypeError("Invalid tones: ".concat(e));
                          if (l && !v.isDecimal(l)) throw new TypeError("Invalid tone duration: ".concat(l));
                          if (l ? l < A.C.MIN_DURATION ? (w.debug('"duration" value is lower than the minimum allowed, setting it to '.concat(A.C.MIN_DURATION, " milliseconds")), l = A.C.MIN_DURATION) : l > A.C.MAX_DURATION ? (w.debug('"duration" value is greater than the maximum allowed, setting it to '.concat(A.C.MAX_DURATION, " milliseconds")), l = A.C.MAX_DURATION) : l = Math.abs(l) : l = A.C.DEFAULT_DURATION, n.duration = l, r && !v.isDecimal(r)) throw new TypeError("Invalid interToneGap: ".concat(r));
                          if (r ? r < A.C.MIN_INTER_TONE_GAP ? (w.debug('"interToneGap" value is lower than the minimum allowed, setting it to '.concat(A.C.MIN_INTER_TONE_GAP, " milliseconds")), r = A.C.MIN_INTER_TONE_GAP) : r = Math.abs(r) : r = A.C.DEFAULT_INTER_TONE_GAP, u !== _.DTMF_TRANSPORT.RFC2833) this._tones ? this._tones += e : (this._tones = e, o.call(this));
                          else {
                              var s = this._getDTMFRTPSender();
                              s && (e = s.toneBuffer + e, s.insertDTMF(e, l, r))
                          }

                          function o() {
                              var e, u = this;
                              if (this._status === I.STATUS_TERMINATED || !this._tones || t >= this._tones.length) this._tones = null;
                              else {
                                  var s = this._tones[t];
                                  if (t += 1, "," === s) e = 2e3;
                                  else {
                                      var i = new A(this);
                                      n.eventHandlers = {
                                          onFailed: function() {
                                              u._tones = null
                                          }
                                      }, i.send(s, n), e = l + r
                                  }
                                  setTimeout(o.bind(this), e)
                              }
                          }
                      }
                  }, {
                      key: "sendInfo",
                      value: function(e, n) {
                          var t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                          if (w.debug("sendInfo()"), this._status !== I.STATUS_CONFIRMED && this._status !== I.STATUS_WAITING_FOR_ACK && this._status !== I.STATUS_1XX_RECEIVED) throw new p.InvalidStateError(this._status);
                          var l = new b(this);
                          l.send(e, n, t)
                      }
                  }, {
                      key: "mute",
                      value: function() {
                          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {
                              audio: !0,
                              video: !1
                          };
                          w.debug("mute()");
                          var n = !1,
                              t = !1;
                          !1 === this._audioMuted && e.audio && (n = !0, this._audioMuted = !0, this._toggleMuteAudio(!0)), !1 === this._videoMuted && e.video && (t = !0, this._videoMuted = !0, this._toggleMuteVideo(!0)), !0 !== n && !0 !== t || this._onmute({
                              audio: n,
                              video: t
                          })
                      }
                  }, {
                      key: "unmute",
                      value: function() {
                          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {
                              audio: !0,
                              video: !0
                          };
                          w.debug("unmute()");
                          var n = !1,
                              t = !1;
                          !0 === this._audioMuted && e.audio && (n = !0, this._audioMuted = !1, !1 === this._localHold && this._toggleMuteAudio(!1)), !0 === this._videoMuted && e.video && (t = !0, this._videoMuted = !1, !1 === this._localHold && this._toggleMuteVideo(!1)), !0 !== n && !0 !== t || this._onunmute({
                              audio: n,
                              video: t
                          })
                      }
                  }, {
                      key: "hold",
                      value: function() {
                          var e = this,
                              n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                              t = arguments.length > 1 ? arguments[1] : void 0;
                          if (w.debug("hold()"), this._status !== I.STATUS_WAITING_FOR_ACK && this._status !== I.STATUS_CONFIRMED) return !1;
                          if (!0 === this._localHold) return !1;
                          if (!this._isReadyToReOffer()) return !1;
                          this._localHold = !0, this._onhold("local");
                          var l = {
                              succeeded: function() {
                                  t && t()
                              },
                              failed: function() {
                                  e.terminate({
                                      cause: _.causes.WEBRTC_ERROR,
                                      status_code: 500,
                                      reason_phrase: "Hold Failed"
                                  })
                              }
                          };
                          return n.useUpdate ? this._sendUpdate({
                              sdpOffer: !0,
                              eventHandlers: l,
                              extraHeaders: n.extraHeaders
                          }) : this._sendReinvite({
                              eventHandlers: l,
                              extraHeaders: n.extraHeaders
                          }), !0
                      }
                  }, {
                      key: "unhold",
                      value: function() {
                          var e = this,
                              n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                              t = arguments.length > 1 ? arguments[1] : void 0;
                          if (w.debug("unhold()"), this._status !== I.STATUS_WAITING_FOR_ACK && this._status !== I.STATUS_CONFIRMED) return !1;
                          if (!1 === this._localHold) return !1;
                          if (!this._isReadyToReOffer()) return !1;
                          this._localHold = !1, this._onunhold("local");
                          var l = {
                              succeeded: function() {
                                  t && t()
                              },
                              failed: function() {
                                  e.terminate({
                                      cause: _.causes.WEBRTC_ERROR,
                                      status_code: 500,
                                      reason_phrase: "Unhold Failed"
                                  })
                              }
                          };
                          return n.useUpdate ? this._sendUpdate({
                              sdpOffer: !0,
                              eventHandlers: l,
                              extraHeaders: n.extraHeaders
                          }) : this._sendReinvite({
                              eventHandlers: l,
                              extraHeaders: n.extraHeaders
                          }), !0
                      }
                  }, {
                      key: "renegotiate",
                      value: function() {
                          var e = this,
                              n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                              t = arguments.length > 1 ? arguments[1] : void 0;
                          w.debug("renegotiate()");
                          var l = n.rtcOfferConstraints || null;
                          if (this._status !== I.STATUS_WAITING_FOR_ACK && this._status !== I.STATUS_CONFIRMED) return !1;
                          if (!this._isReadyToReOffer()) return !1;
                          var r = {
                              succeeded: function() {
                                  t && t()
                              },
                              failed: function() {
                                  e.terminate({
                                      cause: _.causes.WEBRTC_ERROR,
                                      status_code: 500,
                                      reason_phrase: "Media Renegotiation Failed"
                                  })
                              }
                          };
                          return this._setLocalMediaStatus(), n.useUpdate ? this._sendUpdate({
                              sdpOffer: !0,
                              eventHandlers: r,
                              rtcOfferConstraints: l,
                              extraHeaders: n.extraHeaders
                          }) : this._sendReinvite({
                              eventHandlers: r,
                              rtcOfferConstraints: l,
                              extraHeaders: n.extraHeaders
                          }), !0
                      }
                  }, {
                      key: "refer",
                      value: function(e, n) {
                          var t = this;
                          w.debug("refer()");
                          var l = e;
                          if (this._status !== I.STATUS_WAITING_FOR_ACK && this._status !== I.STATUS_CONFIRMED) return !1;
                          if (!(e = this._ua.normalizeTarget(e))) throw new TypeError("Invalid target: ".concat(l));
                          var r = new S(this);
                          r.sendRefer(e, n);
                          var u = r.id;
                          return this._referSubscribers[u] = r, r.on("requestFailed", (function() {
                              delete t._referSubscribers[u]
                          })), r.on("accepted", (function() {
                              delete t._referSubscribers[u]
                          })), r.on("failed", (function() {
                              delete t._referSubscribers[u]
                          })), r
                      }
                  }, {
                      key: "sendRequest",
                      value: function(e, n) {
                          return w.debug("sendRequest()"), this._dialog.sendRequest(e, n)
                      }
                  }, {
                      key: "receiveRequest",
                      value: function(e) {
                          var n = this;
                          if (w.debug("receiveRequest()"), e.method === _.CANCEL) this._status !== I.STATUS_WAITING_FOR_ANSWER && this._status !== I.STATUS_ANSWERED || (this._status = I.STATUS_CANCELED, this._request.reply(487), this._failed("remote", e, _.causes.CANCELED));
                          else switch (e.method) {
                              case _.ACK:
                                  if (this._status !== I.STATUS_WAITING_FOR_ACK) return;
                                  if (this._status = I.STATUS_CONFIRMED, clearTimeout(this._timers.ackTimer), clearTimeout(this._timers.invite2xxTimer), this._late_sdp) {
                                      if (!e.body) {
                                          this.terminate({
                                              cause: _.causes.MISSING_SDP,
                                              status_code: 400
                                          });
                                          break
                                      }
                                      var t = {
                                          originator: "remote",
                                          type: "answer",
                                          sdp: e.body
                                      };
                                      w.debug('emit "sdp"'), this.emit("sdp", t);
                                      var l = new RTCSessionDescription({
                                          type: "answer",
                                          sdp: t.sdp
                                      });
                                      this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                                          return n._connection.setRemoteDescription(l)
                                      })).then((function() {
                                          n._is_confirmed || n._confirmed("remote", e)
                                      })).catch((function(e) {
                                          n.terminate({
                                              cause: _.causes.BAD_MEDIA_DESCRIPTION,
                                              status_code: 488
                                          }), w.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]', e), n.emit("peerconnection:setremotedescriptionfailed", e)
                                      }))
                                  } else this._is_confirmed || this._confirmed("remote", e);
                                  break;
                              case _.BYE:
                                  this._status === I.STATUS_CONFIRMED || this._status === I.STATUS_WAITING_FOR_ACK ? (e.reply(200), this._ended("remote", e, _.causes.BYE)) : this._status === I.STATUS_INVITE_RECEIVED || this._status === I.STATUS_WAITING_FOR_ANSWER ? (e.reply(200), this._request.reply(487, "BYE Received"), this._ended("remote", e, _.causes.BYE)) : e.reply(403, "Wrong Status");
                                  break;
                              case _.INVITE:
                                  this._status === I.STATUS_CONFIRMED ? e.hasHeader("replaces") ? this._receiveReplaces(e) : this._receiveReinvite(e) : e.reply(403, "Wrong Status");
                                  break;
                              case _.INFO:
                                  if (this._status === I.STATUS_1XX_RECEIVED || this._status === I.STATUS_WAITING_FOR_ANSWER || this._status === I.STATUS_ANSWERED || this._status === I.STATUS_WAITING_FOR_ACK || this._status === I.STATUS_CONFIRMED) {
                                      var r = e.hasHeader("Content-Type") ? e.getHeader("Content-Type").toLowerCase() : void 0;
                                      r && r.match(/^application\/dtmf-relay/i) ? new A(this).init_incoming(e) : void 0 !== r ? new b(this).init_incoming(e) : e.reply(415)
                                  } else e.reply(403, "Wrong Status");
                                  break;
                              case _.UPDATE:
                                  this._status === I.STATUS_CONFIRMED ? this._receiveUpdate(e) : e.reply(403, "Wrong Status");
                                  break;
                              case _.REFER:
                                  this._status === I.STATUS_CONFIRMED ? this._receiveRefer(e) : e.reply(403, "Wrong Status");
                                  break;
                              case _.NOTIFY:
                                  this._status === I.STATUS_CONFIRMED ? this._receiveNotify(e) : e.reply(403, "Wrong Status");
                                  break;
                              default:
                                  e.reply(501)
                          }
                      }
                  }, {
                      key: "onTransportError",
                      value: function() {
                          w.warn("onTransportError()"), this._status !== I.STATUS_TERMINATED && this.terminate({
                              status_code: 500,
                              reason_phrase: _.causes.CONNECTION_ERROR,
                              cause: _.causes.CONNECTION_ERROR
                          })
                      }
                  }, {
                      key: "onRequestTimeout",
                      value: function() {
                          w.warn("onRequestTimeout()"), this._status !== I.STATUS_TERMINATED && this.terminate({
                              status_code: 408,
                              reason_phrase: _.causes.REQUEST_TIMEOUT,
                              cause: _.causes.REQUEST_TIMEOUT
                          })
                      }
                  }, {
                      key: "onDialogError",
                      value: function() {
                          w.warn("onDialogError()"), this._status !== I.STATUS_TERMINATED && this.terminate({
                              status_code: 500,
                              reason_phrase: _.causes.DIALOG_ERROR,
                              cause: _.causes.DIALOG_ERROR
                          })
                      }
                  }, {
                      key: "newDTMF",
                      value: function(e) {
                          w.debug("newDTMF()"), this.emit("newDTMF", e)
                      }
                  }, {
                      key: "newInfo",
                      value: function(e) {
                          w.debug("newInfo()"), this.emit("newInfo", e)
                      }
                  }, {
                      key: "_isReadyToReOffer",
                      value: function() {
                          return this._rtcReady ? this._dialog ? !0 !== this._dialog.uac_pending_reply && !0 !== this._dialog.uas_pending_reply || (w.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"), !1) : (w.debug("_isReadyToReOffer() | session not established yet"), !1) : (w.debug("_isReadyToReOffer() | internal WebRTC status not ready"), !1)
                      }
                  }, {
                      key: "_close",
                      value: function() {
                          if (w.debug("close()"), this._localMediaStream && this._localMediaStreamLocallyGenerated && (w.debug("close() | closing local MediaStream"), v.closeMediaStream(this._localMediaStream)), this._status !== I.STATUS_TERMINATED) {
                              if (this._status = I.STATUS_TERMINATED, this._connection) try {
                                  this._connection.close()
                              } catch (e) {
                                  w.warn("close() | error closing the RTCPeerConnection: %o", e)
                              }
                              for (var e in this._timers) Object.prototype.hasOwnProperty.call(this._timers, e) && clearTimeout(this._timers[e]);
                              for (var n in clearTimeout(this._sessionTimers.timer), this._dialog && (this._dialog.terminate(), delete this._dialog), this._earlyDialogs) Object.prototype.hasOwnProperty.call(this._earlyDialogs, n) && (this._earlyDialogs[n].terminate(), delete this._earlyDialogs[n]);
                              for (var t in this._referSubscribers) Object.prototype.hasOwnProperty.call(this._referSubscribers, t) && delete this._referSubscribers[t];
                              this._ua.destroyRTCSession(this)
                          }
                      }
                  }, {
                      key: "_setInvite2xxTimer",
                      value: function(e, n) {
                          var t = g.T1;
                          this._timers.invite2xxTimer = setTimeout(function l() {
                              this._status === I.STATUS_WAITING_FOR_ACK && (e.reply(200, null, ["Contact: ".concat(this._contact)], n), t < g.T2 && (t *= 2) > g.T2 && (t = g.T2), this._timers.invite2xxTimer = setTimeout(l.bind(this), t))
                          }.bind(this), t)
                      }
                  }, {
                      key: "_setACKTimer",
                      value: function() {
                          var e = this;
                          this._timers.ackTimer = setTimeout((function() {
                              e._status === I.STATUS_WAITING_FOR_ACK && (w.debug("no ACK received, terminating the session"), clearTimeout(e._timers.invite2xxTimer), e.sendRequest(_.BYE), e._ended("remote", null, _.causes.NO_ACK))
                          }), g.TIMER_H)
                      }
                  }, {
                      key: "_createRTCConnection",
                      value: function(e, n) {
                          var t = this;
                          this._connection = new RTCPeerConnection(e, n), this._connection.addEventListener("iceconnectionstatechange", (function() {
                              "failed" === t._connection.iceConnectionState && t.terminate({
                                  cause: _.causes.RTP_TIMEOUT,
                                  status_code: 408,
                                  reason_phrase: _.causes.RTP_TIMEOUT
                              })
                          })), w.debug('emit "peerconnection"'), this.emit("peerconnection", {
                              peerconnection: this._connection
                          })
                      }
                  }, {
                      key: "_createLocalDescription",
                      value: function(e, n) {
                          var t = this;
                          if (w.debug("createLocalDescription()"), "offer" !== e && "answer" !== e) throw new Error('createLocalDescription() | invalid type "'.concat(e, '"'));
                          var l = this._connection;
                          return this._rtcReady = !1, Promise.resolve().then((function() {
                              return "offer" === e ? l.createOffer(n).catch((function(e) {
                                  return w.warn('emit "peerconnection:createofferfailed" [error:%o]', e), t.emit("peerconnection:createofferfailed", e), Promise.reject(e)
                              })) : l.createAnswer(n).catch((function(e) {
                                  return w.warn('emit "peerconnection:createanswerfailed" [error:%o]', e), t.emit("peerconnection:createanswerfailed", e), Promise.reject(e)
                              }))
                          })).then((function(e) {
                              return l.setLocalDescription(e).catch((function(e) {
                                  return t._rtcReady = !0, w.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]', e), t.emit("peerconnection:setlocaldescriptionfailed", e), Promise.reject(e)
                              }))
                          })).then((function() {
                              var r = n && n.iceRestart;
                              if ("complete" === l.iceGatheringState && !r || "gathering" === l.iceGatheringState && t._iceReady) {
                                  t._rtcReady = !0;
                                  var u = {
                                      originator: "local",
                                      type: e,
                                      sdp: l.localDescription.sdp
                                  };
                                  return w.debug('emit "sdp"'), t.emit("sdp", u), Promise.resolve(u.sdp)
                              }
                              return new Promise((function(n) {
                                  var r, u, s = !1;
                                  t._iceReady = !1;
                                  var o = function() {
                                      l.removeEventListener("icecandidate", r), l.removeEventListener("icegatheringstatechange", u), s = !0, t._rtcReady = !0, t._iceReady = !0;
                                      var o = {
                                          originator: "local",
                                          type: e,
                                          sdp: l.localDescription.sdp
                                      };
                                      w.debug('emit "sdp"'), t.emit("sdp", o), n(o.sdp)
                                  };
                                  l.addEventListener("icecandidate", r = function(e) {
                                      var n = e.candidate;
                                      n ? t.emit("icecandidate", {
                                          candidate: n,
                                          ready: o
                                      }) : s || o()
                                  }), l.addEventListener("icegatheringstatechange", u = function() {
                                      "complete" !== l.iceGatheringState || s || o()
                                  })
                              }))
                          }))
                      }
                  }, {
                      key: "_createDialog",
                      value: function(e, n, t) {
                          var l = "UAS" === n ? e.to_tag : e.from_tag,
                              r = "UAS" === n ? e.from_tag : e.to_tag,
                              u = e.call_id + l + r,
                              s = this._earlyDialogs[u];
                          if (t) return !!s || ((s = new C(this, e, n, C.C.STATUS_EARLY)).error ? (w.debug(s.error), this._failed("remote", e, _.causes.INTERNAL_ERROR), !1) : (this._earlyDialogs[u] = s, !0));
                          if (this._from_tag = e.from_tag, this._to_tag = e.to_tag, s) return s.update(e, n), this._dialog = s, delete this._earlyDialogs[u], !0;
                          var o = new C(this, e, n);
                          return o.error ? (w.debug(o.error), this._failed("remote", e, _.causes.INTERNAL_ERROR), !1) : (this._dialog = o, !0)
                      }
                  }, {
                      key: "_receiveReinvite",
                      value: function(e) {
                          var n = this;
                          w.debug("receiveReinvite()");
                          var t = e.hasHeader("Content-Type") ? e.getHeader("Content-Type").toLowerCase() : void 0,
                              l = {
                                  request: e,
                                  callback: void 0,
                                  reject: function() {
                                      var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                                      r = !0;
                                      var t = n.status_code || 403,
                                          l = n.reason_phrase || "",
                                          u = v.cloneArray(n.extraHeaders);
                                      if (this._status !== I.STATUS_CONFIRMED) return !1;
                                      if (t < 300 || t >= 700) throw new TypeError("Invalid status_code: ".concat(t));
                                      e.reply(t, l, u)
                                  }.bind(this)
                              },
                              r = !1;
                          if (this.emit("reinvite", l), !r) {
                              if (this._late_sdp = !1, !e.body) return this._late_sdp = !0, this._remoteHold && (this._remoteHold = !1, this._onunhold("remote")), void(this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                                  return n._createLocalDescription("offer", n._rtcOfferConstraints)
                              })).then((function(e) {
                                  u.call(n, e)
                              })).catch((function() {
                                  e.reply(500)
                              })));
                              if ("application/sdp" !== t) return w.debug("invalid Content-Type"), void e.reply(415);
                              this._processInDialogSdpOffer(e).then((function(e) {
                                  n._status !== I.STATUS_TERMINATED && u.call(n, e)
                              })).catch((function(e) {
                                  w.warn(e)
                              }))
                          }

                          function u(n) {
                              var t = this,
                                  r = ["Contact: ".concat(this._contact)];
                              this._handleSessionTimersInIncomingRequest(e, r), this._late_sdp && (n = this._mangleOffer(n)), e.reply(200, null, r, n, (function() {
                                  t._status = I.STATUS_WAITING_FOR_ACK, t._setInvite2xxTimer(e, n), t._setACKTimer()
                              })), "function" == typeof l.callback && l.callback()
                          }
                      }
                  }, {
                      key: "_receiveUpdate",
                      value: function(e) {
                          var n = this;
                          w.debug("receiveUpdate()");
                          var t = e.hasHeader("Content-Type") ? e.getHeader("Content-Type").toLowerCase() : void 0,
                              l = {
                                  request: e,
                                  callback: void 0,
                                  reject: function() {
                                      var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                                      r = !0;
                                      var t = n.status_code || 403,
                                          l = n.reason_phrase || "",
                                          u = v.cloneArray(n.extraHeaders);
                                      if (this._status !== I.STATUS_CONFIRMED) return !1;
                                      if (t < 300 || t >= 700) throw new TypeError("Invalid status_code: ".concat(t));
                                      e.reply(t, l, u)
                                  }.bind(this)
                              },
                              r = !1;
                          if (this.emit("update", l), !r)
                              if (e.body) {
                                  if ("application/sdp" !== t) return w.debug("invalid Content-Type"), void e.reply(415);
                                  this._processInDialogSdpOffer(e).then((function(e) {
                                      n._status !== I.STATUS_TERMINATED && u.call(n, e)
                                  })).catch((function(e) {
                                      w.warn(e)
                                  }))
                              } else u.call(this, null);

                          function u(n) {
                              var t = ["Contact: ".concat(this._contact)];
                              this._handleSessionTimersInIncomingRequest(e, t), e.reply(200, null, t, n), "function" == typeof l.callback && l.callback()
                          }
                      }
                  }, {
                      key: "_processInDialogSdpOffer",
                      value: function(e) {
                          var n = this;
                          w.debug("_processInDialogSdpOffer()");
                          var t, l = e.parseSDP(),
                              u = !1,
                              s = r(l.media);
                          try {
                              for (s.s(); !(t = s.n()).done;) {
                                  var o = t.value;
                                  if (-1 !== O.indexOf(o.type)) {
                                      var i = o.direction || l.direction || "sendrecv";
                                      if ("sendonly" !== i && "inactive" !== i) {
                                          u = !1;
                                          break
                                      }
                                      u = !0
                                  }
                              }
                          } catch (e) {
                              s.e(e)
                          } finally {
                              s.f()
                          }
                          var a = {
                              originator: "remote",
                              type: "offer",
                              sdp: e.body
                          };
                          w.debug('emit "sdp"'), this.emit("sdp", a);
                          var c = new RTCSessionDescription({
                              type: "offer",
                              sdp: a.sdp
                          });
                          return this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                              if (n._status === I.STATUS_TERMINATED) throw new Error("terminated");
                              return n._connection.setRemoteDescription(c).catch((function(t) {
                                  throw e.reply(488), w.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]', t), n.emit("peerconnection:setremotedescriptionfailed", t), t
                              }))
                          })).then((function() {
                              if (n._status === I.STATUS_TERMINATED) throw new Error("terminated");
                              !0 === n._remoteHold && !1 === u ? (n._remoteHold = !1, n._onunhold("remote")) : !1 === n._remoteHold && !0 === u && (n._remoteHold = !0, n._onhold("remote"))
                          })).then((function() {
                              if (n._status === I.STATUS_TERMINATED) throw new Error("terminated");
                              return n._createLocalDescription("answer", n._rtcAnswerConstraints).catch((function(n) {
                                  throw e.reply(500), w.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]', n), n
                              }))
                          })).catch((function(e) {
                              w.warn("_processInDialogSdpOffer() failed [error: %o]", e)
                          })), this._connectionPromiseQueue
                      }
                  }, {
                      key: "_receiveRefer",
                      value: function(e) {
                          var n = this;
                          if (w.debug("receiveRefer()"), !e.refer_to) return w.debug("no Refer-To header field present in REFER"), void e.reply(400);
                          if (e.refer_to.uri.scheme !== _.SIP) return w.debug("Refer-To header field points to a non-SIP URI scheme"), void e.reply(416);
                          e.reply(202);
                          var t = new E(this, e.cseq);

                          function l(n) {
                              var l = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                              if (n = "function" == typeof n ? n : null, this._status !== I.STATUS_WAITING_FOR_ACK && this._status !== I.STATUS_CONFIRMED) return !1;
                              var r = new u(this._ua);
                              if (r.on("progress", (function(e) {
                                      var n = e.response;
                                      t.notify(n.status_code, n.reason_phrase)
                                  })), r.on("accepted", (function(e) {
                                      var n = e.response;
                                      t.notify(n.status_code, n.reason_phrase)
                                  })), r.on("_failed", (function(e) {
                                      var n = e.message,
                                          l = e.cause;
                                      n ? t.notify(n.status_code, n.reason_phrase) : t.notify(487, l)
                                  })), e.refer_to.uri.hasHeader("replaces")) {
                                  var s = decodeURIComponent(e.refer_to.uri.getHeader("replaces"));
                                  l.extraHeaders = v.cloneArray(l.extraHeaders), l.extraHeaders.push("Replaces: ".concat(s))
                              }
                              r.connect(e.refer_to.uri.toAor(), l, n)
                          }

                          function r() {
                              t.notify(603)
                          }
                          w.debug('emit "refer"'), this.emit("refer", {
                              request: e,
                              accept: function(e, t) {
                                  l.call(n, e, t)
                              },
                              reject: function() {
                                  r.call(n)
                              }
                          })
                      }
                  }, {
                      key: "_receiveNotify",
                      value: function(e) {
                          if (w.debug("receiveNotify()"), e.event || e.reply(400), "refer" === e.event.event) {
                              var n, t;
                              if (e.event.params && e.event.params.id) n = e.event.params.id, t = this._referSubscribers[n];
                              else {
                                  if (1 !== Object.keys(this._referSubscribers).length) return void e.reply(400, "Missing event id parameter");
                                  t = this._referSubscribers[Object.keys(this._referSubscribers)[0]]
                              }
                              if (!t) return void e.reply(481, "Subscription does not exist");
                              t.receiveNotify(e), e.reply(200)
                          } else e.reply(489)
                      }
                  }, {
                      key: "_receiveReplaces",
                      value: function(e) {
                          var n = this;

                          function t(n) {
                              var t = this;
                              if (this._status !== I.STATUS_WAITING_FOR_ACK && this._status !== I.STATUS_CONFIRMED) return !1;
                              var l = new u(this._ua);
                              l.on("confirmed", (function() {
                                  t.terminate()
                              })), l.init_incoming(e, n)
                          }

                          function l() {
                              w.debug("Replaced INVITE rejected by the user"), e.reply(486)
                          }
                          w.debug("receiveReplaces()"), this.emit("replaces", {
                              request: e,
                              accept: function(e) {
                                  t.call(n, e)
                              },
                              reject: function() {
                                  l.call(n)
                              }
                          })
                      }
                  }, {
                      key: "_sendInitialRequest",
                      value: function(e, n, t) {
                          var l = this,
                              r = new T(this._ua, this._request, {
                                  onRequestTimeout: function() {
                                      l.onRequestTimeout()
                                  },
                                  onTransportError: function() {
                                      l.onTransportError()
                                  },
                                  onAuthenticated: function(e) {
                                      l._request = e
                                  },
                                  onReceiveResponse: function(e) {
                                      l._receiveInviteResponse(e)
                                  }
                              });
                          Promise.resolve().then((function() {
                              return t || (e.audio || e.video ? (l._localMediaStreamLocallyGenerated = !0, navigator.mediaDevices.getUserMedia(e).catch((function(e) {
                                  if (l._status === I.STATUS_TERMINATED) throw new Error("terminated");
                                  throw l._failed("local", null, _.causes.USER_DENIED_MEDIA_ACCESS), w.warn('emit "getusermediafailed" [error:%o]', e), l.emit("getusermediafailed", e), e
                              }))) : void 0)
                          })).then((function(e) {
                              if (l._status === I.STATUS_TERMINATED) throw new Error("terminated");
                              return l._localMediaStream = e, e && e.getTracks().forEach((function(n) {
                                  l._connection.addTrack(n, e)
                              })), l._connecting(l._request), l._createLocalDescription("offer", n).catch((function(e) {
                                  throw l._failed("local", null, _.causes.WEBRTC_ERROR), e
                              }))
                          })).then((function(e) {
                              if (l._is_canceled || l._status === I.STATUS_TERMINATED) throw new Error("terminated");
                              l._request.body = e, l._status = I.STATUS_INVITE_SENT, w.debug('emit "sending" [request:%o]', l._request), l.emit("sending", {
                                  request: l._request
                              }), r.send()
                          })).catch((function(e) {
                              l._status !== I.STATUS_TERMINATED && w.warn(e)
                          }))
                      }
                  }, {
                      key: "_getDTMFRTPSender",
                      value: function() {
                          var e = this._connection.getSenders().find((function(e) {
                              return e.track && "audio" === e.track.kind
                          }));
                          if (e && e.dtmf) return e.dtmf;
                          w.warn("sendDTMF() | no local audio track to send DTMF with")
                      }
                  }, {
                      key: "_receiveInviteResponse",
                      value: function(e) {
                          var n = this;
                          if (w.debug("receiveInviteResponse()"), this._dialog && e.status_code >= 200 && e.status_code <= 299) {
                              if (this._dialog.id.call_id === e.call_id && this._dialog.id.local_tag === e.from_tag && this._dialog.id.remote_tag === e.to_tag) return void this.sendRequest(_.ACK);
                              var t = new C(this, e, "UAC");
                              return void 0 !== t.error ? void w.debug(t.error) : (this.sendRequest(_.ACK), void this.sendRequest(_.BYE))
                          }
                          if (this._is_canceled) e.status_code >= 100 && e.status_code < 200 ? this._request.cancel(this._cancel_reason) : e.status_code >= 200 && e.status_code < 299 && this._acceptAndTerminate(e);
                          else if (this._status === I.STATUS_INVITE_SENT || this._status === I.STATUS_1XX_RECEIVED) switch (!0) {
                              case /^100$/.test(e.status_code):
                                  this._status = I.STATUS_1XX_RECEIVED;
                                  break;
                              case /^1[0-9]{2}$/.test(e.status_code):
                                  if (!e.to_tag) {
                                      w.debug("1xx response received without to tag");
                                      break
                                  }
                                  if (e.hasHeader("contact") && !this._createDialog(e, "UAC", !0)) break;
                                  if (this._status = I.STATUS_1XX_RECEIVED, !e.body) {
                                      this._progress("remote", e);
                                      break
                                  }
                                  var l = {
                                      originator: "remote",
                                      type: "answer",
                                      sdp: e.body
                                  };
                                  w.debug('emit "sdp"'), this.emit("sdp", l);
                                  var r = new RTCSessionDescription({
                                      type: "answer",
                                      sdp: l.sdp
                                  });
                                  this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                                      return n._connection.setRemoteDescription(r)
                                  })).then((function() {
                                      return n._progress("remote", e)
                                  })).catch((function(e) {
                                      w.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]', e), n.emit("peerconnection:setremotedescriptionfailed", e)
                                  }));
                                  break;
                              case /^2[0-9]{2}$/.test(e.status_code):
                                  if (this._status = I.STATUS_CONFIRMED, !e.body) {
                                      this._acceptAndTerminate(e, 400, _.causes.MISSING_SDP), this._failed("remote", e, _.causes.BAD_MEDIA_DESCRIPTION);
                                      break
                                  }
                                  if (!this._createDialog(e, "UAC")) break;
                                  var u = {
                                      originator: "remote",
                                      type: "answer",
                                      sdp: e.body
                                  };
                                  w.debug('emit "sdp"'), this.emit("sdp", u);
                                  var s = new RTCSessionDescription({
                                      type: "answer",
                                      sdp: u.sdp
                                  });
                                  this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                                      if ("stable" === n._connection.signalingState) return n._connection.createOffer(n._rtcOfferConstraints).then((function(e) {
                                          return n._connection.setLocalDescription(e)
                                      })).catch((function(t) {
                                          n._acceptAndTerminate(e, 500, t.toString()), n._failed("local", e, _.causes.WEBRTC_ERROR)
                                      }))
                                  })).then((function() {
                                      n._connection.setRemoteDescription(s).then((function() {
                                          n._handleSessionTimersInIncomingResponse(e), n._accepted("remote", e), n.sendRequest(_.ACK), n._confirmed("local", null)
                                      })).catch((function(t) {
                                          n._acceptAndTerminate(e, 488, "Not Acceptable Here"), n._failed("remote", e, _.causes.BAD_MEDIA_DESCRIPTION), w.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]', t), n.emit("peerconnection:setremotedescriptionfailed", t)
                                      }))
                                  }));
                                  break;
                              default:
                                  var o = v.sipErrorCause(e.status_code);
                                  this._failed("remote", e, o)
                          }
                      }
                  }, {
                      key: "_sendReinvite",
                      value: function() {
                          var e = this,
                              n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                          w.debug("sendReinvite()");
                          var t = v.cloneArray(n.extraHeaders),
                              l = v.cloneObject(n.eventHandlers),
                              r = n.rtcOfferConstraints || this._rtcOfferConstraints || null,
                              u = !1;

                          function s(e) {
                              var n = this;
                              if (this._status !== I.STATUS_TERMINATED && (this.sendRequest(_.ACK), !u))
                                  if (this._handleSessionTimersInIncomingResponse(e), e.body)
                                      if (e.hasHeader("Content-Type") && "application/sdp" === e.getHeader("Content-Type").toLowerCase()) {
                                          var t = {
                                              originator: "remote",
                                              type: "answer",
                                              sdp: e.body
                                          };
                                          w.debug('emit "sdp"'), this.emit("sdp", t);
                                          var r = new RTCSessionDescription({
                                              type: "answer",
                                              sdp: t.sdp
                                          });
                                          this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                                              return n._connection.setRemoteDescription(r)
                                          })).then((function() {
                                              l.succeeded && l.succeeded(e)
                                          })).catch((function(e) {
                                              o.call(n), w.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]', e), n.emit("peerconnection:setremotedescriptionfailed", e)
                                          }))
                                      } else o.call(this);
                              else o.call(this)
                          }

                          function o(e) {
                              l.failed && l.failed(e)
                          }
                          t.push("Contact: ".concat(this._contact)), t.push("Content-Type: application/sdp"), this._sessionTimers.running && t.push("Session-Expires: ".concat(this._sessionTimers.currentExpires, ";refresher=").concat(this._sessionTimers.refresher ? "uac" : "uas")), this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                              return e._createLocalDescription("offer", r)
                          })).then((function(n) {
                              var l = {
                                  originator: "local",
                                  type: "offer",
                                  sdp: n = e._mangleOffer(n)
                              };
                              w.debug('emit "sdp"'), e.emit("sdp", l), e.sendRequest(_.INVITE, {
                                  extraHeaders: t,
                                  body: n,
                                  eventHandlers: {
                                      onSuccessResponse: function(n) {
                                          s.call(e, n), u = !0
                                      },
                                      onErrorResponse: function(n) {
                                          o.call(e, n)
                                      },
                                      onTransportError: function() {
                                          e.onTransportError()
                                      },
                                      onRequestTimeout: function() {
                                          e.onRequestTimeout()
                                      },
                                      onDialogError: function() {
                                          e.onDialogError()
                                      }
                                  }
                              })
                          })).catch((function() {
                              o()
                          }))
                      }
                  }, {
                      key: "_sendUpdate",
                      value: function() {
                          var e = this,
                              n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                          w.debug("sendUpdate()");
                          var t = v.cloneArray(n.extraHeaders),
                              l = v.cloneObject(n.eventHandlers),
                              r = n.rtcOfferConstraints || this._rtcOfferConstraints || null,
                              u = n.sdpOffer || !1,
                              s = !1;

                          function o(e) {
                              var n = this;
                              if (this._status !== I.STATUS_TERMINATED && !s)
                                  if (this._handleSessionTimersInIncomingResponse(e), u) {
                                      if (!e.body) return void i.call(this);
                                      if (!e.hasHeader("Content-Type") || "application/sdp" !== e.getHeader("Content-Type").toLowerCase()) return void i.call(this);
                                      var t = {
                                          originator: "remote",
                                          type: "answer",
                                          sdp: e.body
                                      };
                                      w.debug('emit "sdp"'), this.emit("sdp", t);
                                      var r = new RTCSessionDescription({
                                          type: "answer",
                                          sdp: t.sdp
                                      });
                                      this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                                          return n._connection.setRemoteDescription(r)
                                      })).then((function() {
                                          l.succeeded && l.succeeded(e)
                                      })).catch((function(e) {
                                          i.call(n), w.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]', e), n.emit("peerconnection:setremotedescriptionfailed", e)
                                      }))
                                  } else l.succeeded && l.succeeded(e)
                          }

                          function i(e) {
                              l.failed && l.failed(e)
                          }
                          t.push("Contact: ".concat(this._contact)), this._sessionTimers.running && t.push("Session-Expires: ".concat(this._sessionTimers.currentExpires, ";refresher=").concat(this._sessionTimers.refresher ? "uac" : "uas")), u ? (t.push("Content-Type: application/sdp"), this._connectionPromiseQueue = this._connectionPromiseQueue.then((function() {
                              return e._createLocalDescription("offer", r)
                          })).then((function(n) {
                              var l = {
                                  originator: "local",
                                  type: "offer",
                                  sdp: n = e._mangleOffer(n)
                              };
                              w.debug('emit "sdp"'), e.emit("sdp", l), e.sendRequest(_.UPDATE, {
                                  extraHeaders: t,
                                  body: n,
                                  eventHandlers: {
                                      onSuccessResponse: function(n) {
                                          o.call(e, n), s = !0
                                      },
                                      onErrorResponse: function(n) {
                                          i.call(e, n)
                                      },
                                      onTransportError: function() {
                                          e.onTransportError()
                                      },
                                      onRequestTimeout: function() {
                                          e.onRequestTimeout()
                                      },
                                      onDialogError: function() {
                                          e.onDialogError()
                                      }
                                  }
                              })
                          })).catch((function() {
                              i.call(e)
                          }))) : this.sendRequest(_.UPDATE, {
                              extraHeaders: t,
                              eventHandlers: {
                                  onSuccessResponse: function(n) {
                                      o.call(e, n)
                                  },
                                  onErrorResponse: function(n) {
                                      i.call(e, n)
                                  },
                                  onTransportError: function() {
                                      e.onTransportError()
                                  },
                                  onRequestTimeout: function() {
                                      e.onRequestTimeout()
                                  },
                                  onDialogError: function() {
                                      e.onDialogError()
                                  }
                              }
                          })
                      }
                  }, {
                      key: "_acceptAndTerminate",
                      value: function(e, n, t) {
                          w.debug("acceptAndTerminate()");
                          var l = [];
                          n && (t = t || _.REASON_PHRASE[n] || "", l.push("Reason: SIP ;cause=".concat(n, '; text="').concat(t, '"'))), (this._dialog || this._createDialog(e, "UAC")) && (this.sendRequest(_.ACK), this.sendRequest(_.BYE, {
                              extraHeaders: l
                          })), this._status = I.STATUS_TERMINATED
                      }
                  }, {
                      key: "_mangleOffer",
                      value: function(e) {
                          if (!this._localHold && !this._remoteHold) return e;
                          if (e = d.parse(e), this._localHold && !this._remoteHold) {
                              w.debug("mangleOffer() | me on hold, mangling offer");
                              var n, t = r(e.media);
                              try {
                                  for (t.s(); !(n = t.n()).done;) {
                                      var l = n.value; - 1 !== O.indexOf(l.type) && (l.direction ? "sendrecv" === l.direction ? l.direction = "sendonly" : "recvonly" === l.direction && (l.direction = "inactive") : l.direction = "sendonly")
                                  }
                              } catch (e) {
                                  t.e(e)
                              } finally {
                                  t.f()
                              }
                          } else if (this._localHold && this._remoteHold) {
                              w.debug("mangleOffer() | both on hold, mangling offer");
                              var u, s = r(e.media);
                              try {
                                  for (s.s(); !(u = s.n()).done;) {
                                      var o = u.value; - 1 !== O.indexOf(o.type) && (o.direction = "inactive")
                                  }
                              } catch (e) {
                                  s.e(e)
                              } finally {
                                  s.f()
                              }
                          } else if (this._remoteHold) {
                              w.debug("mangleOffer() | remote on hold, mangling offer");
                              var i, a = r(e.media);
                              try {
                                  for (a.s(); !(i = a.n()).done;) {
                                      var c = i.value; - 1 !== O.indexOf(c.type) && (c.direction ? "sendrecv" === c.direction ? c.direction = "recvonly" : "recvonly" === c.direction && (c.direction = "inactive") : c.direction = "recvonly")
                                  }
                              } catch (e) {
                                  a.e(e)
                              } finally {
                                  a.f()
                              }
                          }
                          return d.write(e)
                      }
                  }, {
                      key: "_setLocalMediaStatus",
                      value: function() {
                          var e = !0,
                              n = !0;
                          (this._localHold || this._remoteHold) && (e = !1, n = !1), this._audioMuted && (e = !1), this._videoMuted && (n = !1), this._toggleMuteAudio(!e), this._toggleMuteVideo(!n)
                      }
                  }, {
                      key: "_handleSessionTimersInIncomingRequest",
                      value: function(e, n) {
                          var t;
                          this._sessionTimers.enabled && (e.session_expires && e.session_expires >= _.MIN_SESSION_EXPIRES ? (this._sessionTimers.currentExpires = e.session_expires, t = e.session_expires_refresher || "uas") : (this._sessionTimers.currentExpires = this._sessionTimers.defaultExpires, t = "uas"), n.push("Session-Expires: ".concat(this._sessionTimers.currentExpires, ";refresher=").concat(t)), this._sessionTimers.refresher = "uas" === t, this._runSessionTimer())
                      }
                  }, {
                      key: "_handleSessionTimersInIncomingResponse",
                      value: function(e) {
                          var n;
                          this._sessionTimers.enabled && (e.session_expires && e.session_expires >= _.MIN_SESSION_EXPIRES ? (this._sessionTimers.currentExpires = e.session_expires, n = e.session_expires_refresher || "uac") : (this._sessionTimers.currentExpires = this._sessionTimers.defaultExpires, n = "uac"), this._sessionTimers.refresher = "uac" === n, this._runSessionTimer())
                      }
                  }, {
                      key: "_runSessionTimer",
                      value: function() {
                          var e = this,
                              n = this._sessionTimers.currentExpires;
                          this._sessionTimers.running = !0, clearTimeout(this._sessionTimers.timer), this._sessionTimers.refresher ? this._sessionTimers.timer = setTimeout((function() {
                              e._status !== I.STATUS_TERMINATED && e._isReadyToReOffer() && (w.debug("runSessionTimer() | sending session refresh request"), e._sessionTimers.refreshMethod === _.UPDATE ? e._sendUpdate() : e._sendReinvite())
                          }), 500 * n) : this._sessionTimers.timer = setTimeout((function() {
                              e._status !== I.STATUS_TERMINATED && (w.warn("runSessionTimer() | timer expired, terminating the session"), e.terminate({
                                  cause: _.causes.REQUEST_TIMEOUT,
                                  status_code: 408,
                                  reason_phrase: "Session Timer Expired"
                              }))
                          }), 1100 * n)
                      }
                  }, {
                      key: "_toggleMuteAudio",
                      value: function(e) {
                          var n, t = r(this._connection.getSenders().filter((function(e) {
                              return e.track && "audio" === e.track.kind
                          })));
                          try {
                              for (t.s(); !(n = t.n()).done;) n.value.track.enabled = !e
                          } catch (e) {
                              t.e(e)
                          } finally {
                              t.f()
                          }
                      }
                  }, {
                      key: "_toggleMuteVideo",
                      value: function(e) {
                          var n, t = r(this._connection.getSenders().filter((function(e) {
                              return e.track && "video" === e.track.kind
                          })));
                          try {
                              for (t.s(); !(n = t.n()).done;) n.value.track.enabled = !e
                          } catch (e) {
                              t.e(e)
                          } finally {
                              t.f()
                          }
                      }
                  }, {
                      key: "_newRTCSession",
                      value: function(e, n) {
                          w.debug("newRTCSession()"), this._ua.newRTCSession(this, {
                              originator: e,
                              session: this,
                              request: n
                          })
                      }
                  }, {
                      key: "_connecting",
                      value: function(e) {
                          w.debug("session connecting"), w.debug('emit "connecting"'), this.emit("connecting", {
                              request: e
                          })
                      }
                  }, {
                      key: "_progress",
                      value: function(e, n) {
                          w.debug("session progress"), w.debug('emit "progress"'), this.emit("progress", {
                              originator: e,
                              response: n || null
                          })
                      }
                  }, {
                      key: "_accepted",
                      value: function(e, n) {
                          w.debug("session accepted"), this._start_time = new Date, w.debug('emit "accepted"'), this.emit("accepted", {
                              originator: e,
                              response: n || null
                          })
                      }
                  }, {
                      key: "_confirmed",
                      value: function(e, n) {
                          w.debug("session confirmed"), this._is_confirmed = !0, w.debug('emit "confirmed"'), this.emit("confirmed", {
                              originator: e,
                              ack: n || null
                          })
                      }
                  }, {
                      key: "_ended",
                      value: function(e, n, t) {
                          w.debug("session ended"), this._end_time = new Date, this._close(), w.debug('emit "ended"'), this.emit("ended", {
                              originator: e,
                              message: n || null,
                              cause: t
                          })
                      }
                  }, {
                      key: "_failed",
                      value: function(e, n, t) {
                          w.debug("session failed"), w.debug('emit "_failed"'), this.emit("_failed", {
                              originator: e,
                              message: n || null,
                              cause: t
                          }), this._close(), w.debug('emit "failed"'), this.emit("failed", {
                              originator: e,
                              message: n || null,
                              cause: t
                          })
                      }
                  }, {
                      key: "_onhold",
                      value: function(e) {
                          w.debug("session onhold"), this._setLocalMediaStatus(), w.debug('emit "hold"'), this.emit("hold", {
                              originator: e
                          })
                      }
                  }, {
                      key: "_onunhold",
                      value: function(e) {
                          w.debug("session onunhold"), this._setLocalMediaStatus(), w.debug('emit "unhold"'), this.emit("unhold", {
                              originator: e
                          })
                      }
                  }, {
                      key: "_onmute",
                      value: function(e) {
                          var n = e.audio,
                              t = e.video;
                          w.debug("session onmute"), this._setLocalMediaStatus(), w.debug('emit "muted"'), this.emit("muted", {
                              audio: n,
                              video: t
                          })
                      }
                  }, {
                      key: "_onunmute",
                      value: function(e) {
                          var n = e.audio,
                              t = e.video;
                          w.debug("session onunmute"), this._setLocalMediaStatus(), w.debug('emit "unmuted"'), this.emit("unmuted", {
                              audio: n,
                              video: t
                          })
                      }
                  }, {
                      key: "C",
                      get: function() {
                          return I
                      }
                  }, {
                      key: "causes",
                      get: function() {
                          return _.causes
                      }
                  }, {
                      key: "id",
                      get: function() {
                          return this._id
                      }
                  }, {
                      key: "connection",
                      get: function() {
                          return this._connection
                      }
                  }, {
                      key: "contact",
                      get: function() {
                          return this._contact
                      }
                  }, {
                      key: "direction",
                      get: function() {
                          return this._direction
                      }
                  }, {
                      key: "local_identity",
                      get: function() {
                          return this._local_identity
                      }
                  }, {
                      key: "remote_identity",
                      get: function() {
                          return this._remote_identity
                      }
                  }, {
                      key: "start_time",
                      get: function() {
                          return this._start_time
                      }
                  }, {
                      key: "end_time",
                      get: function() {
                          return this._end_time
                      }
                  }, {
                      key: "data",
                      get: function() {
                          return this._data
                      },
                      set: function(e) {
                          this._data = e
                      }
                  }, {
                      key: "status",
                      get: function() {
                          return this._status
                      }
                  }]), u
              }(h)
          },
          481: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function u(e, n) {
                  return u = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, u(e, n)
              }

              function s(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? function(e) {
                      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                      return e
                  }(e) : n
              }

              function o(e) {
                  return o = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, o(e)
              }
              var i = t(187).EventEmitter,
                  a = t(356),
                  c = t(965),
                  h = t(63),
                  d = t(424),
                  f = new a("RTCSession:DTMF"),
                  _ = {
                      MIN_DURATION: 70,
                      MAX_DURATION: 6e3,
                      DEFAULT_DURATION: 100,
                      MIN_INTER_TONE_GAP: 50,
                      DEFAULT_INTER_TONE_GAP: 500
                  };
              e.exports = function(e) {
                  ! function(e, n) {
                      if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                      e.prototype = Object.create(n && n.prototype, {
                          constructor: {
                              value: e,
                              writable: !0,
                              configurable: !0
                          }
                      }), n && u(e, n)
                  }(p, e);
                  var n, t, l, i, a = (l = p, i = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }(), function() {
                      var e, n = o(l);
                      if (i) {
                          var t = o(this).constructor;
                          e = Reflect.construct(n, arguments, t)
                      } else e = n.apply(this, arguments);
                      return s(this, e)
                  });

                  function p(e) {
                      var n;
                      return function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, p), (n = a.call(this))._session = e, n._direction = null, n._tone = null, n._duration = null, n._request = null, n
                  }
                  return n = p, t = [{
                      key: "send",
                      value: function(e) {
                          var n = this,
                              t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                          if (void 0 === e) throw new TypeError("Not enough arguments");
                          if (this._direction = "outgoing", this._session.status !== this._session.C.STATUS_CONFIRMED && this._session.status !== this._session.C.STATUS_WAITING_FOR_ACK) throw new h.InvalidStateError(this._session.status);
                          var l = d.cloneArray(t.extraHeaders);
                          if (this.eventHandlers = d.cloneObject(t.eventHandlers), "string" == typeof e) e = e.toUpperCase();
                          else {
                              if ("number" != typeof e) throw new TypeError("Invalid tone: ".concat(e));
                              e = e.toString()
                          }
                          if (!e.match(/^[0-9A-DR#*]$/)) throw new TypeError("Invalid tone: ".concat(e));
                          this._tone = e, this._duration = t.duration, l.push("Content-Type: application/dtmf-relay");
                          var r = "Signal=".concat(this._tone, "\r\n");
                          r += "Duration=".concat(this._duration), this._session.newDTMF({
                              originator: "local",
                              dtmf: this,
                              request: this._request
                          }), this._session.sendRequest(c.INFO, {
                              extraHeaders: l,
                              eventHandlers: {
                                  onSuccessResponse: function(e) {
                                      n.emit("succeeded", {
                                          originator: "remote",
                                          response: e
                                      })
                                  },
                                  onErrorResponse: function(e) {
                                      n.eventHandlers.onFailed && n.eventHandlers.onFailed(), n.emit("failed", {
                                          originator: "remote",
                                          response: e
                                      })
                                  },
                                  onRequestTimeout: function() {
                                      n._session.onRequestTimeout()
                                  },
                                  onTransportError: function() {
                                      n._session.onTransportError()
                                  },
                                  onDialogError: function() {
                                      n._session.onDialogError()
                                  }
                              },
                              body: r
                          })
                      }
                  }, {
                      key: "init_incoming",
                      value: function(e) {
                          var n = /^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,
                              t = /^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;
                          if (this._direction = "incoming", this._request = e, e.reply(200), e.body) {
                              var l = e.body.split("\n");
                              l.length >= 1 && n.test(l[0]) && (this._tone = l[0].replace(n, "$2")), l.length >= 2 && t.test(l[1]) && (this._duration = parseInt(l[1].replace(t, "$2"), 10))
                          }
                          this._duration || (this._duration = _.DEFAULT_DURATION), this._tone ? this._session.newDTMF({
                              originator: "remote",
                              dtmf: this,
                              request: e
                          }) : f.debug("invalid INFO DTMF received, discarded")
                      }
                  }, {
                      key: "tone",
                      get: function() {
                          return this._tone
                      }
                  }, {
                      key: "duration",
                      get: function() {
                          return this._duration
                      }
                  }], t && r(n.prototype, t), p
              }(i), e.exports.C = _
          },
          126: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function u(e, n) {
                  return u = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, u(e, n)
              }

              function s(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? function(e) {
                      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                      return e
                  }(e) : n
              }

              function o(e) {
                  return o = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, o(e)
              }
              var i = t(187).EventEmitter,
                  a = t(965),
                  c = t(63),
                  h = t(424);
              e.exports = function(e) {
                  ! function(e, n) {
                      if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                      e.prototype = Object.create(n && n.prototype, {
                          constructor: {
                              value: e,
                              writable: !0,
                              configurable: !0
                          }
                      }), n && u(e, n)
                  }(f, e);
                  var n, t, l, i, d = (l = f, i = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }(), function() {
                      var e, n = o(l);
                      if (i) {
                          var t = o(this).constructor;
                          e = Reflect.construct(n, arguments, t)
                      } else e = n.apply(this, arguments);
                      return s(this, e)
                  });

                  function f(e) {
                      var n;
                      return function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, f), (n = d.call(this))._session = e, n._direction = null, n._contentType = null, n._body = null, n
                  }
                  return n = f, t = [{
                      key: "send",
                      value: function(e, n) {
                          var t = this,
                              l = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                          if (this._direction = "outgoing", void 0 === e) throw new TypeError("Not enough arguments");
                          if (this._session.status !== this._session.C.STATUS_CONFIRMED && this._session.status !== this._session.C.STATUS_WAITING_FOR_ACK) throw new c.InvalidStateError(this._session.status);
                          this._contentType = e, this._body = n;
                          var r = h.cloneArray(l.extraHeaders);
                          r.push("Content-Type: ".concat(e)), this._session.newInfo({
                              originator: "local",
                              info: this,
                              request: this.request
                          }), this._session.sendRequest(a.INFO, {
                              extraHeaders: r,
                              eventHandlers: {
                                  onSuccessResponse: function(e) {
                                      t.emit("succeeded", {
                                          originator: "remote",
                                          response: e
                                      })
                                  },
                                  onErrorResponse: function(e) {
                                      t.emit("failed", {
                                          originator: "remote",
                                          response: e
                                      })
                                  },
                                  onTransportError: function() {
                                      t._session.onTransportError()
                                  },
                                  onRequestTimeout: function() {
                                      t._session.onRequestTimeout()
                                  },
                                  onDialogError: function() {
                                      t._session.onDialogError()
                                  }
                              },
                              body: n
                          })
                      }
                  }, {
                      key: "init_incoming",
                      value: function(e) {
                          this._direction = "incoming", this.request = e, e.reply(200), this._contentType = e.hasHeader("Content-Type") ? e.getHeader("Content-Type").toLowerCase() : void 0, this._body = e.body, this._session.newInfo({
                              originator: "remote",
                              info: this,
                              request: e
                          })
                      }
                  }, {
                      key: "contentType",
                      get: function() {
                          return this._contentType
                      }
                  }, {
                      key: "body",
                      get: function() {
                          return this._body
                      }
                  }], t && r(n.prototype, t), f
              }(i)
          },
          774: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }
              var r = t(356),
                  u = t(965),
                  s = new r("RTCSession:ReferNotifier");
              e.exports = function() {
                  function e(n, t, l) {
                      ! function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, e), this._session = n, this._id = t, this._expires = l || 300, this._active = !0, this.notify(100)
                  }
                  var n, t;
                  return n = e, (t = [{
                      key: "notify",
                      value: function(e, n) {
                          var t;
                          s.debug("notify()"), !1 !== this._active && (n = n || u.REASON_PHRASE[e] || "", t = e >= 200 ? "terminated;reason=noresource" : "active;expires=".concat(this._expires), this._session.sendRequest(u.NOTIFY, {
                              extraHeaders: ["Event: ".concat("refer", ";id=").concat(this._id), "Subscription-State: ".concat(t), "Content-Type: ".concat("message/sipfrag;version=2.0")],
                              body: "SIP/2.0 ".concat(e, " ").concat(n),
                              eventHandlers: {
                                  onErrorResponse: function() {
                                      this._active = !1
                                  }
                              }
                          }))
                      }
                  }]) && l(n.prototype, t), e
              }()
          },
          603: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function u(e, n) {
                  return u = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, u(e, n)
              }

              function s(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? function(e) {
                      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                      return e
                  }(e) : n
              }

              function o(e) {
                  return o = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, o(e)
              }
              var i = t(187).EventEmitter,
                  a = t(356),
                  c = t(965),
                  h = t(790),
                  d = t(424),
                  f = new a("RTCSession:ReferSubscriber");
              e.exports = function(e) {
                  ! function(e, n) {
                      if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                      e.prototype = Object.create(n && n.prototype, {
                          constructor: {
                              value: e,
                              writable: !0,
                              configurable: !0
                          }
                      }), n && u(e, n)
                  }(_, e);
                  var n, t, l, i, a = (l = _, i = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }(), function() {
                      var e, n = o(l);
                      if (i) {
                          var t = o(this).constructor;
                          e = Reflect.construct(n, arguments, t)
                      } else e = n.apply(this, arguments);
                      return s(this, e)
                  });

                  function _(e) {
                      var n;
                      return function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, _), (n = a.call(this))._id = null, n._session = e, n
                  }
                  return n = _, t = [{
                      key: "sendRefer",
                      value: function(e) {
                          var n = this,
                              t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                          f.debug("sendRefer()");
                          var l = d.cloneArray(t.extraHeaders),
                              r = d.cloneObject(t.eventHandlers);
                          for (var u in r) Object.prototype.hasOwnProperty.call(r, u) && this.on(u, r[u]);
                          var s = null;
                          t.replaces && (s = t.replaces._request.call_id, s += ";to-tag=".concat(t.replaces._to_tag), s += ";from-tag=".concat(t.replaces._from_tag), s = encodeURIComponent(s));
                          var o = "Refer-To: <".concat(e).concat(s ? "?Replaces=".concat(s) : "", ">");
                          if (l.push(o), !l.some((function(e) {
                                  return e.toLowerCase().startsWith("referred-by:")
                              }))) {
                              var i = "Referred-By: <".concat(this._session._ua._configuration.uri._scheme, ":").concat(this._session._ua._configuration.uri._user, "@").concat(this._session._ua._configuration.uri._host, ">");
                              l.push(i)
                          }
                          l.push("Contact: ".concat(this._session.contact));
                          var a = this._session.sendRequest(c.REFER, {
                              extraHeaders: l,
                              eventHandlers: {
                                  onSuccessResponse: function(e) {
                                      n._requestSucceeded(e)
                                  },
                                  onErrorResponse: function(e) {
                                      n._requestFailed(e, c.causes.REJECTED)
                                  },
                                  onTransportError: function() {
                                      n._requestFailed(null, c.causes.CONNECTION_ERROR)
                                  },
                                  onRequestTimeout: function() {
                                      n._requestFailed(null, c.causes.REQUEST_TIMEOUT)
                                  },
                                  onDialogError: function() {
                                      n._requestFailed(null, c.causes.DIALOG_ERROR)
                                  }
                              }
                          });
                          this._id = a.cseq
                      }
                  }, {
                      key: "receiveNotify",
                      value: function(e) {
                          if (f.debug("receiveNotify()"), e.body) {
                              var n = h.parse(e.body.trim(), "Status_Line");
                              if (-1 !== n) switch (!0) {
                                  case /^100$/.test(n.status_code):
                                      this.emit("trying", {
                                          request: e,
                                          status_line: n
                                      });
                                      break;
                                  case /^1[0-9]{2}$/.test(n.status_code):
                                      this.emit("progress", {
                                          request: e,
                                          status_line: n
                                      });
                                      break;
                                  case /^2[0-9]{2}$/.test(n.status_code):
                                      this.emit("accepted", {
                                          request: e,
                                          status_line: n
                                      });
                                      break;
                                  default:
                                      this.emit("failed", {
                                          request: e,
                                          status_line: n
                                      })
                              } else f.debug('receiveNotify() | error parsing NOTIFY body: "'.concat(e.body, '"'))
                          }
                      }
                  }, {
                      key: "_requestSucceeded",
                      value: function(e) {
                          f.debug("REFER succeeded"), f.debug('emit "requestSucceeded"'), this.emit("requestSucceeded", {
                              response: e
                          })
                      }
                  }, {
                      key: "_requestFailed",
                      value: function(e, n) {
                          f.debug("REFER failed"), f.debug('emit "requestFailed"'), this.emit("requestFailed", {
                              response: e || null,
                              cause: n
                          })
                      }
                  }, {
                      key: "id",
                      get: function() {
                          return this._id
                      }
                  }], t && r(n.prototype, t), _
              }(i)
          },
          116: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }
              var r = t(356),
                  u = t(424),
                  s = t(965),
                  o = t(497),
                  i = t(66),
                  a = new r("Registrator");
              e.exports = function() {
                  function e(n, t) {
                      ! function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, e), this._reg_id = 1, this._ua = n, this._transport = t, this._registrar = n.configuration.registrar_server, this._expires = n.configuration.register_expires, this._call_id = u.createRandomToken(22), this._cseq = 0, this._to_uri = n.configuration.uri, this._registrationTimer = null, this._registering = !1, this._registered = !1, this._contact = this._ua.contact.toString(), this._contact += ";+sip.ice", this._extraHeaders = [], this._extraContactParams = "", this._sipInstance = '"<urn:uuid:'.concat(this._ua.configuration.instance_id, '>"'), this._contact += ";reg-id=".concat(this._reg_id), this._contact += ";+sip.instance=".concat(this._sipInstance)
                  }
                  var n, t;
                  return n = e, t = [{
                      key: "setExtraHeaders",
                      value: function(e) {
                          Array.isArray(e) || (e = []), this._extraHeaders = e.slice()
                      }
                  }, {
                      key: "setExtraContactParams",
                      value: function(e) {
                          for (var n in e instanceof Object || (e = {}), this._extraContactParams = "", e)
                              if (Object.prototype.hasOwnProperty.call(e, n)) {
                                  var t = e[n];
                                  this._extraContactParams += ";".concat(n), t && (this._extraContactParams += "=".concat(t))
                              }
                      }
                  }, {
                      key: "register",
                      value: function() {
                          var e = this;
                          if (this._registering) a.debug("Register request in progress...");
                          else {
                              var n = this._extraHeaders.slice();
                              n.push("Contact: ".concat(this._contact, ";expires=").concat(this._expires).concat(this._extraContactParams)), n.push("Expires: ".concat(this._expires));
                              var t = new o.OutgoingRequest(s.REGISTER, this._registrar, this._ua, {
                                      to_uri: this._to_uri,
                                      call_id: this._call_id,
                                      cseq: this._cseq += 1
                                  }, n),
                                  l = new i(this._ua, t, {
                                      onRequestTimeout: function() {
                                          e._registrationFailure(null, s.causes.REQUEST_TIMEOUT)
                                      },
                                      onTransportError: function() {
                                          e._registrationFailure(null, s.causes.CONNECTION_ERROR)
                                      },
                                      onAuthenticated: function() {
                                          e._cseq += 1
                                      },
                                      onReceiveResponse: function(n) {
                                          if (n.cseq === e._cseq) switch (null !== e._registrationTimer && (clearTimeout(e._registrationTimer), e._registrationTimer = null), !0) {
                                              case /^1[0-9]{2}$/.test(n.status_code):
                                                  break;
                                              case /^2[0-9]{2}$/.test(n.status_code):
                                                  if (e._registering = !1, !n.hasHeader("Contact")) {
                                                      a.debug("no Contact header in response to REGISTER, response ignored");
                                                      break
                                                  }
                                                  var t = n.headers.Contact.reduce((function(e, n) {
                                                          return e.concat(n.parsed)
                                                      }), []),
                                                      l = t.find((function(n) {
                                                          return e._sipInstance === n.getParam("+sip.instance") && e._reg_id === parseInt(n.getParam("reg-id"))
                                                      }));
                                                  if (l || (l = t.find((function(n) {
                                                          return n.uri.user === e._ua.contact.uri.user
                                                      }))), !l) {
                                                      a.debug("no Contact header pointing to us, response ignored");
                                                      break
                                                  }
                                                  var r = l.getParam("expires");
                                                  !r && n.hasHeader("expires") && (r = n.getHeader("expires")), r || (r = e._expires), (r = Number(r)) < 10 && (r = 10);
                                                  var o = r > 64 ? 1e3 * r / 2 + Math.floor(1e3 * (r / 2 - 32) * Math.random()) : 1e3 * r - 5e3;
                                                  e._registrationTimer = setTimeout((function() {
                                                      e._registrationTimer = null, 0 === e._ua.listeners("registrationExpiring").length ? e.register() : e._ua.emit("registrationExpiring")
                                                  }), o), l.hasParam("temp-gruu") && (e._ua.contact.temp_gruu = l.getParam("temp-gruu").replace(/"/g, "")), l.hasParam("pub-gruu") && (e._ua.contact.pub_gruu = l.getParam("pub-gruu").replace(/"/g, "")), e._registered || (e._registered = !0, e._ua.registered({
                                                      response: n
                                                  }));
                                                  break;
                                              case /^423$/.test(n.status_code):
                                                  n.hasHeader("min-expires") ? (e._expires = Number(n.getHeader("min-expires")), e._expires < 10 && (e._expires = 10), e.register()) : (a.debug("423 response received for REGISTER without Min-Expires"), e._registrationFailure(n, s.causes.SIP_FAILURE_CODE));
                                                  break;
                                              default:
                                                  var i = u.sipErrorCause(n.status_code);
                                                  e._registrationFailure(n, i)
                                          }
                                      }
                                  });
                              this._registering = !0, l.send()
                          }
                      }
                  }, {
                      key: "unregister",
                      value: function() {
                          var e = this,
                              n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                          if (this._registered) {
                              this._registered = !1, null !== this._registrationTimer && (clearTimeout(this._registrationTimer), this._registrationTimer = null);
                              var t = this._extraHeaders.slice();
                              n.all ? t.push("Contact: *".concat(this._extraContactParams)) : t.push("Contact: ".concat(this._contact, ";expires=0").concat(this._extraContactParams)), t.push("Expires: 0");
                              var l = new o.OutgoingRequest(s.REGISTER, this._registrar, this._ua, {
                                      to_uri: this._to_uri,
                                      call_id: this._call_id,
                                      cseq: this._cseq += 1
                                  }, t),
                                  r = new i(this._ua, l, {
                                      onRequestTimeout: function() {
                                          e._unregistered(null, s.causes.REQUEST_TIMEOUT)
                                      },
                                      onTransportError: function() {
                                          e._unregistered(null, s.causes.CONNECTION_ERROR)
                                      },
                                      onAuthenticated: function() {
                                          e._cseq += 1
                                      },
                                      onReceiveResponse: function(n) {
                                          switch (!0) {
                                              case /^1[0-9]{2}$/.test(n.status_code):
                                                  break;
                                              case /^2[0-9]{2}$/.test(n.status_code):
                                                  e._unregistered(n);
                                                  break;
                                              default:
                                                  var t = u.sipErrorCause(n.status_code);
                                                  e._unregistered(n, t)
                                          }
                                      }
                                  });
                              r.send()
                          } else a.debug("already unregistered")
                      }
                  }, {
                      key: "close",
                      value: function() {
                          this._registered && this.unregister()
                      }
                  }, {
                      key: "onTransportClosed",
                      value: function() {
                          this._registering = !1, null !== this._registrationTimer && (clearTimeout(this._registrationTimer), this._registrationTimer = null), this._registered && (this._registered = !1, this._ua.unregistered({}))
                      }
                  }, {
                      key: "_registrationFailure",
                      value: function(e, n) {
                          this._registering = !1, this._ua.registrationFailed({
                              response: e || null,
                              cause: n
                          }), this._registered && (this._registered = !1, this._ua.unregistered({
                              response: e || null,
                              cause: n
                          }))
                      }
                  }, {
                      key: "_unregistered",
                      value: function(e, n) {
                          this._registering = !1, this._registered = !1, this._ua.unregistered({
                              response: e || null,
                              cause: n || null
                          })
                      }
                  }, {
                      key: "registered",
                      get: function() {
                          return this._registered
                      }
                  }], t && l(n.prototype, t), e
              }()
          },
          66: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }
              var r = t(356),
                  u = t(965),
                  s = t(999),
                  o = t(754),
                  i = new r("RequestSender"),
                  a = {
                      onRequestTimeout: function() {},
                      onTransportError: function() {},
                      onReceiveResponse: function() {},
                      onAuthenticated: function() {}
                  };
              e.exports = function() {
                  function e(n, t, l) {
                      for (var r in function(e, n) {
                              if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                          }(this, e), this._ua = n, this._eventHandlers = l, this._method = t.method, this._request = t, this._auth = null, this._challenged = !1, this._staled = !1, a) Object.prototype.hasOwnProperty.call(a, r) && (this._eventHandlers[r] || (this._eventHandlers[r] = a[r]));
                      n.status !== n.C.STATUS_USER_CLOSED || this._method === u.BYE && this._method === u.ACK || this._eventHandlers.onTransportError()
                  }
                  var n, t;
                  return n = e, (t = [{
                      key: "send",
                      value: function() {
                          var e = this,
                              n = {
                                  onRequestTimeout: function() {
                                      e._eventHandlers.onRequestTimeout()
                                  },
                                  onTransportError: function() {
                                      e._eventHandlers.onTransportError()
                                  },
                                  onReceiveResponse: function(n) {
                                      e._receiveResponse(n)
                                  }
                              };
                          switch (this._method) {
                              case "INVITE":
                                  this.clientTransaction = new o.InviteClientTransaction(this._ua, this._ua.transport, this._request, n);
                                  break;
                              case "ACK":
                                  this.clientTransaction = new o.AckClientTransaction(this._ua, this._ua.transport, this._request, n);
                                  break;
                              default:
                                  this.clientTransaction = new o.NonInviteClientTransaction(this._ua, this._ua.transport, this._request, n)
                          }
                          this._ua._configuration.authorization_jwt && this._request.setHeader("Authorization", this._ua._configuration.authorization_jwt), this.clientTransaction.send()
                      }
                  }, {
                      key: "_receiveResponse",
                      value: function(e) {
                          var n, t, l = e.status_code;
                          if (401 !== l && 407 !== l || null === this._ua.configuration.password && null === this._ua.configuration.ha1) this._eventHandlers.onReceiveResponse(e);
                          else {
                              if (401 === e.status_code ? (n = e.parseHeader("www-authenticate"), t = "authorization") : (n = e.parseHeader("proxy-authenticate"), t = "proxy-authorization"), !n) return i.debug("".concat(e.status_code, " with wrong or missing challenge, cannot authenticate")), void this._eventHandlers.onReceiveResponse(e);
                              if (!this._challenged || !this._staled && !0 === n.stale) {
                                  if (this._auth || (this._auth = new s({
                                          username: this._ua.configuration.authorization_user,
                                          password: this._ua.configuration.password,
                                          realm: this._ua.configuration.realm,
                                          ha1: this._ua.configuration.ha1
                                      })), !this._auth.authenticate(this._request, n)) return void this._eventHandlers.onReceiveResponse(e);
                                  this._challenged = !0, this._ua.set("realm", this._auth.get("realm")), this._ua.set("ha1", this._auth.get("ha1")), n.stale && (this._staled = !0), this._request = this._request.clone(), this._request.cseq += 1, this._request.setHeader("cseq", "".concat(this._request.cseq, " ").concat(this._method)), this._request.setHeader(t, this._auth.toString()), this._eventHandlers.onAuthenticated(this._request), this.send()
                              } else this._eventHandlers.onReceiveResponse(e)
                          }
                      }
                  }]) && l(n.prototype, t), e
              }()
          },
          497: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                  e.prototype = Object.create(n && n.prototype, {
                      constructor: {
                          value: e,
                          writable: !0,
                          configurable: !0
                      }
                  }), n && u(e, n)
              }

              function u(e, n) {
                  return u = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, u(e, n)
              }

              function s(e) {
                  var n = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }();
                  return function() {
                      var t, l = i(e);
                      if (n) {
                          var r = i(this).constructor;
                          t = Reflect.construct(l, arguments, r)
                      } else t = l.apply(this, arguments);
                      return o(this, t)
                  }
              }

              function o(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? function(e) {
                      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                      return e
                  }(e) : n
              }

              function i(e) {
                  return i = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, i(e)
              }

              function a(e, n) {
                  var t;
                  if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                      if (Array.isArray(e) || (t = function(e, n) {
                              if (e) {
                                  if ("string" == typeof e) return c(e, n);
                                  var t = Object.prototype.toString.call(e).slice(8, -1);
                                  return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? c(e, n) : void 0
                              }
                          }(e)) || n && e && "number" == typeof e.length) {
                          t && (e = t);
                          var l = 0,
                              r = function() {};
                          return {
                              s: r,
                              n: function() {
                                  return l >= e.length ? {
                                      done: !0
                                  } : {
                                      done: !1,
                                      value: e[l++]
                                  }
                              },
                              e: function(e) {
                                  throw e
                              },
                              f: r
                          }
                      }
                      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                  }
                  var u, s = !0,
                      o = !1;
                  return {
                      s: function() {
                          t = e[Symbol.iterator]()
                      },
                      n: function() {
                          var e = t.next();
                          return s = e.done, e
                      },
                      e: function(e) {
                          o = !0, u = e
                      },
                      f: function() {
                          try {
                              s || null == t.return || t.return()
                          } finally {
                              if (o) throw u
                          }
                      }
                  }
              }

              function c(e, n) {
                  (null == n || n > e.length) && (n = e.length);
                  for (var t = 0, l = new Array(n); t < n; t++) l[t] = e[t];
                  return l
              }

              function h(e, n) {
                  if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
              }

              function d(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function f(e, n, t) {
                  return n && d(e.prototype, n), t && d(e, t), e
              }
              var _ = t(766),
                  p = t(356),
                  m = t(965),
                  v = t(424),
                  g = t(437),
                  y = t(790),
                  C = new p("SIPMessage"),
                  T = function() {
                      function e(n, t, l, r, u, s) {
                          if (h(this, e), !n || !t || !l) return null;
                          r = r || {}, this.ua = l, this.headers = {}, this.method = n, this.ruri = t, this.body = s, this.extraHeaders = v.cloneArray(u), r.route_set ? this.setHeader("route", r.route_set) : l.configuration.use_preloaded_route && this.setHeader("route", "<".concat(l.transport.sip_uri, ";lr>")), this.setHeader("via", ""), this.setHeader("max-forwards", m.MAX_FORWARDS);
                          var o = r.to_uri || t,
                              i = r.to_tag ? {
                                  tag: r.to_tag
                              } : null,
                              a = void 0 !== r.to_display_name ? r.to_display_name : null;
                          this.to = new g(o, a, i), this.setHeader("to", this.to.toString());
                          var c, d = r.from_uri || l.configuration.uri,
                              f = {
                                  tag: r.from_tag || v.newTag()
                              };
                          c = void 0 !== r.from_display_name ? r.from_display_name : l.configuration.display_name ? l.configuration.display_name : null, this.from = new g(d, c, f), this.setHeader("from", this.from.toString());
                          var _ = r.call_id || l.configuration.jssip_id + v.createRandomToken(15);
                          this.call_id = _, this.setHeader("call-id", _);
                          var p = r.cseq || Math.floor(1e4 * Math.random());
                          this.cseq = p, this.setHeader("cseq", "".concat(p, " ").concat(n))
                      }
                      return f(e, [{
                          key: "setHeader",
                          value: function(e, n) {
                              for (var t = new RegExp("^\\s*".concat(e, "\\s*:"), "i"), l = 0; l < this.extraHeaders.length; l++) t.test(this.extraHeaders[l]) && this.extraHeaders.splice(l, 1);
                              this.headers[v.headerize(e)] = Array.isArray(n) ? n : [n]
                          }
                      }, {
                          key: "getHeader",
                          value: function(e) {
                              var n = this.headers[v.headerize(e)];
                              if (n) {
                                  if (n[0]) return n[0]
                              } else {
                                  var t, l = new RegExp("^\\s*".concat(e, "\\s*:"), "i"),
                                      r = a(this.extraHeaders);
                                  try {
                                      for (r.s(); !(t = r.n()).done;) {
                                          var u = t.value;
                                          if (l.test(u)) return u.substring(u.indexOf(":") + 1).trim()
                                      }
                                  } catch (e) {
                                      r.e(e)
                                  } finally {
                                      r.f()
                                  }
                              }
                          }
                      }, {
                          key: "getHeaders",
                          value: function(e) {
                              var n = this.headers[v.headerize(e)],
                                  t = [];
                              if (n) {
                                  var l, r = a(n);
                                  try {
                                      for (r.s(); !(l = r.n()).done;) {
                                          var u = l.value;
                                          t.push(u)
                                      }
                                  } catch (e) {
                                      r.e(e)
                                  } finally {
                                      r.f()
                                  }
                                  return t
                              }
                              var s, o = new RegExp("^\\s*".concat(e, "\\s*:"), "i"),
                                  i = a(this.extraHeaders);
                              try {
                                  for (i.s(); !(s = i.n()).done;) {
                                      var c = s.value;
                                      o.test(c) && t.push(c.substring(c.indexOf(":") + 1).trim())
                                  }
                              } catch (e) {
                                  i.e(e)
                              } finally {
                                  i.f()
                              }
                              return t
                          }
                      }, {
                          key: "hasHeader",
                          value: function(e) {
                              if (this.headers[v.headerize(e)]) return !0;
                              var n, t = new RegExp("^\\s*".concat(e, "\\s*:"), "i"),
                                  l = a(this.extraHeaders);
                              try {
                                  for (l.s(); !(n = l.n()).done;) {
                                      var r = n.value;
                                      if (t.test(r)) return !0
                                  }
                              } catch (e) {
                                  l.e(e)
                              } finally {
                                  l.f()
                              }
                              return !1
                          }
                      }, {
                          key: "parseSDP",
                          value: function(e) {
                              return !e && this.sdp || (this.sdp = _.parse(this.body || "")), this.sdp
                          }
                      }, {
                          key: "toString",
                          value: function() {
                              var e = "".concat(this.method, " ").concat(this.ruri, " SIP/2.0\r\n");
                              for (var n in this.headers)
                                  if (Object.prototype.hasOwnProperty.call(this.headers, n)) {
                                      var t, l = a(this.headers[n]);
                                      try {
                                          for (l.s(); !(t = l.n()).done;) {
                                              var r = t.value;
                                              e += "".concat(n, ": ").concat(r, "\r\n")
                                          }
                                      } catch (e) {
                                          l.e(e)
                                      } finally {
                                          l.f()
                                      }
                                  } var u, s = a(this.extraHeaders);
                              try {
                                  for (s.s(); !(u = s.n()).done;) {
                                      var o = u.value;
                                      e += "".concat(o.trim(), "\r\n")
                                  }
                              } catch (e) {
                                  s.e(e)
                              } finally {
                                  s.f()
                              }
                              var i = [];
                              switch (this.method) {
                                  case m.REGISTER:
                                      i.push("path", "gruu");
                                      break;
                                  case m.INVITE:
                                      this.ua.configuration.session_timers && i.push("timer"), (this.ua.contact.pub_gruu || this.ua.contact.temp_gruu) && i.push("gruu"), i.push("ice", "replaces");
                                      break;
                                  case m.UPDATE:
                                      this.ua.configuration.session_timers && i.push("timer"), i.push("ice")
                              }
                              i.push("outbound");
                              var c = this.ua.configuration.user_agent || m.USER_AGENT;
                              if (e += "Allow: ".concat(m.ALLOWED_METHODS, "\r\n"), e += "Supported: ".concat(i, "\r\n"), e += "User-Agent: ".concat(c, "\r\n"), this.body) {
                                  var h = v.str_utf8_length(this.body);
                                  e += "Content-Length: ".concat(h, "\r\n\r\n"), e += this.body
                              } else e += "Content-Length: 0\r\n\r\n";
                              return e
                          }
                      }, {
                          key: "clone",
                          value: function() {
                              var n = new e(this.method, this.ruri, this.ua);
                              return Object.keys(this.headers).forEach((function(e) {
                                  n.headers[e] = this.headers[e].slice()
                              }), this), n.body = this.body, n.extraHeaders = v.cloneArray(this.extraHeaders), n.to = this.to, n.from = this.from, n.call_id = this.call_id, n.cseq = this.cseq, n
                          }
                      }]), e
                  }(),
                  A = function(e) {
                      r(t, e);
                      var n = s(t);

                      function t(e, l, r, u, s) {
                          var o;
                          return h(this, t), (o = n.call(this, m.INVITE, e, l, r, u, s)).transaction = null, o
                      }
                      return f(t, [{
                          key: "cancel",
                          value: function(e) {
                              this.transaction.cancel(e)
                          }
                      }, {
                          key: "clone",
                          value: function() {
                              var e = new t(this.ruri, this.ua);
                              return Object.keys(this.headers).forEach((function(n) {
                                  e.headers[n] = this.headers[n].slice()
                              }), this), e.body = this.body, e.extraHeaders = v.cloneArray(this.extraHeaders), e.to = this.to, e.from = this.from, e.call_id = this.call_id, e.cseq = this.cseq, e.transaction = this.transaction, e
                          }
                      }]), t
                  }(T),
                  b = function() {
                      function e() {
                          h(this, e), this.data = null, this.headers = null, this.method = null, this.via = null, this.via_branch = null, this.call_id = null, this.cseq = null, this.from = null, this.from_tag = null, this.to = null, this.to_tag = null, this.body = null, this.sdp = null
                      }
                      return f(e, [{
                          key: "addHeader",
                          value: function(e, n) {
                              var t = {
                                  raw: n
                              };
                              e = v.headerize(e), this.headers[e] ? this.headers[e].push(t) : this.headers[e] = [t]
                          }
                      }, {
                          key: "getHeader",
                          value: function(e) {
                              var n = this.headers[v.headerize(e)];
                              if (n) return n[0] ? n[0].raw : void 0
                          }
                      }, {
                          key: "getHeaders",
                          value: function(e) {
                              var n = this.headers[v.headerize(e)],
                                  t = [];
                              if (!n) return [];
                              var l, r = a(n);
                              try {
                                  for (r.s(); !(l = r.n()).done;) {
                                      var u = l.value;
                                      t.push(u.raw)
                                  }
                              } catch (e) {
                                  r.e(e)
                              } finally {
                                  r.f()
                              }
                              return t
                          }
                      }, {
                          key: "hasHeader",
                          value: function(e) {
                              return !!this.headers[v.headerize(e)]
                          }
                      }, {
                          key: "parseHeader",
                          value: function(e) {
                              var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                              if (e = v.headerize(e), this.headers[e]) {
                                  if (!(n >= this.headers[e].length)) {
                                      var t = this.headers[e][n],
                                          l = t.raw;
                                      if (t.parsed) return t.parsed;
                                      var r = y.parse(l, e.replace(/-/g, "_"));
                                      return -1 === r ? (this.headers[e].splice(n, 1), void C.debug('error parsing "'.concat(e, '" header field with value "').concat(l, '"'))) : (t.parsed = r, r)
                                  }
                                  C.debug('not so many "'.concat(e, '" headers present'))
                              } else C.debug('header "'.concat(e, '" not present'))
                          }
                      }, {
                          key: "s",
                          value: function(e, n) {
                              return this.parseHeader(e, n)
                          }
                      }, {
                          key: "setHeader",
                          value: function(e, n) {
                              var t = {
                                  raw: n
                              };
                              this.headers[v.headerize(e)] = [t]
                          }
                      }, {
                          key: "parseSDP",
                          value: function(e) {
                              return !e && this.sdp || (this.sdp = _.parse(this.body || "")), this.sdp
                          }
                      }, {
                          key: "toString",
                          value: function() {
                              return this.data
                          }
                      }]), e
                  }(),
                  E = function(e) {
                      r(t, e);
                      var n = s(t);

                      function t(e) {
                          var l;
                          return h(this, t), (l = n.call(this)).ua = e, l.headers = {}, l.ruri = null, l.transport = null, l.server_transaction = null, l
                      }
                      return f(t, [{
                          key: "reply",
                          value: function(e, n, t, l, r, u) {
                              var s = [],
                                  o = this.getHeader("To");
                              if (n = n || null, !(e = e || null) || e < 100 || e > 699) throw new TypeError("Invalid status_code: ".concat(e));
                              if (n && "string" != typeof n && !(n instanceof String)) throw new TypeError("Invalid reason_phrase: ".concat(n));
                              n = n || m.REASON_PHRASE[e] || "", t = v.cloneArray(t);
                              var i = "SIP/2.0 ".concat(e, " ").concat(n, "\r\n");
                              if (this.method === m.INVITE && e > 100 && e <= 200) {
                                  var c, h = a(this.getHeaders("record-route"));
                                  try {
                                      for (h.s(); !(c = h.n()).done;) {
                                          var d = c.value;
                                          i += "Record-Route: ".concat(d, "\r\n")
                                      }
                                  } catch (e) {
                                      h.e(e)
                                  } finally {
                                      h.f()
                                  }
                              }
                              var f, _ = a(this.getHeaders("via"));
                              try {
                                  for (_.s(); !(f = _.n()).done;) {
                                      var p = f.value;
                                      i += "Via: ".concat(p, "\r\n")
                                  }
                              } catch (e) {
                                  _.e(e)
                              } finally {
                                  _.f()
                              }!this.to_tag && e > 100 ? o += ";tag=".concat(v.newTag()) : this.to_tag && !this.s("to").hasParam("tag") && (o += ";tag=".concat(this.to_tag)), i += "To: ".concat(o, "\r\n"), i += "From: ".concat(this.getHeader("From"), "\r\n"), i += "Call-ID: ".concat(this.call_id, "\r\n"), i += "CSeq: ".concat(this.cseq, " ").concat(this.method, "\r\n");
                              var g, y = a(t);
                              try {
                                  for (y.s(); !(g = y.n()).done;) {
                                      var C = g.value;
                                      i += "".concat(C.trim(), "\r\n")
                                  }
                              } catch (e) {
                                  y.e(e)
                              } finally {
                                  y.f()
                              }
                              switch (this.method) {
                                  case m.INVITE:
                                      this.ua.configuration.session_timers && s.push("timer"), (this.ua.contact.pub_gruu || this.ua.contact.temp_gruu) && s.push("gruu"), s.push("ice", "replaces");
                                      break;
                                  case m.UPDATE:
                                      this.ua.configuration.session_timers && s.push("timer"), l && s.push("ice"), s.push("replaces")
                              }
                              if (s.push("outbound"), this.method === m.OPTIONS ? (i += "Allow: ".concat(m.ALLOWED_METHODS, "\r\n"), i += "Accept: ".concat(m.ACCEPTED_BODY_TYPES, "\r\n")) : 405 === e ? i += "Allow: ".concat(m.ALLOWED_METHODS, "\r\n") : 415 === e && (i += "Accept: ".concat(m.ACCEPTED_BODY_TYPES, "\r\n")), i += "Supported: ".concat(s, "\r\n"), l) {
                                  var T = v.str_utf8_length(l);
                                  i += "Content-Type: application/sdp\r\n", i += "Content-Length: ".concat(T, "\r\n\r\n"), i += l
                              } else i += "Content-Length: ".concat(0, "\r\n\r\n");
                              this.server_transaction.receiveResponse(e, i, r, u)
                          }
                      }, {
                          key: "reply_sl",
                          value: function() {
                              var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,
                                  n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
                                  t = this.getHeaders("via");
                              if (!e || e < 100 || e > 699) throw new TypeError("Invalid status_code: ".concat(e));
                              if (n && "string" != typeof n && !(n instanceof String)) throw new TypeError("Invalid reason_phrase: ".concat(n));
                              n = n || m.REASON_PHRASE[e] || "";
                              var l, r = "SIP/2.0 ".concat(e, " ").concat(n, "\r\n"),
                                  u = a(t);
                              try {
                                  for (u.s(); !(l = u.n()).done;) {
                                      var s = l.value;
                                      r += "Via: ".concat(s, "\r\n")
                                  }
                              } catch (e) {
                                  u.e(e)
                              } finally {
                                  u.f()
                              }
                              var o = this.getHeader("To");
                              !this.to_tag && e > 100 ? o += ";tag=".concat(v.newTag()) : this.to_tag && !this.s("to").hasParam("tag") && (o += ";tag=".concat(this.to_tag)), r += "To: ".concat(o, "\r\n"), r += "From: ".concat(this.getHeader("From"), "\r\n"), r += "Call-ID: ".concat(this.call_id, "\r\n"), r += "CSeq: ".concat(this.cseq, " ").concat(this.method, "\r\n"), r += "Content-Length: ".concat(0, "\r\n\r\n"), this.transport.send(r)
                          }
                      }]), t
                  }(b),
                  S = function(e) {
                      r(t, e);
                      var n = s(t);

                      function t() {
                          var e;
                          return h(this, t), (e = n.call(this)).headers = {}, e.status_code = null, e.reason_phrase = null, e
                      }
                      return t
                  }(b);
              e.exports = {
                  OutgoingRequest: T,
                  InitialOutgoingInviteRequest: A,
                  IncomingRequest: E,
                  IncomingResponse: S
              }
          },
          351: (e, n, t) => {
              "use strict";
              var l = t(356),
                  r = t(424),
                  u = t(790),
                  s = new l("Socket");
              n.isSocket = function(e) {
                  if (Array.isArray(e)) return !1;
                  if (void 0 === e) return s.warn("undefined JsSIP.Socket instance"), !1;
                  try {
                      if (!r.isString(e.url)) throw s.warn("missing or invalid JsSIP.Socket url property"), new Error("Missing or invalid JsSIP.Socket url property");
                      if (!r.isString(e.via_transport)) throw s.warn("missing or invalid JsSIP.Socket via_transport property"), new Error("Missing or invalid JsSIP.Socket via_transport property");
                      if (-1 === u.parse(e.sip_uri, "SIP_URI")) throw s.warn("missing or invalid JsSIP.Socket sip_uri property"), new Error("missing or invalid JsSIP.Socket sip_uri property")
                  } catch (e) {
                      return !1
                  }
                  try {
                      ["connect", "disconnect", "send"].forEach((function(n) {
                          if (!r.isFunction(e[n])) throw s.warn("missing or invalid JsSIP.Socket method: ".concat(n)), new Error("Missing or invalid JsSIP.Socket method: ".concat(n))
                      }))
                  } catch (e) {
                      return !1
                  }
                  return !0
              }
          },
          306: e => {
              "use strict";
              e.exports = {
                  T1: 500,
                  T2: 4e3,
                  T4: 5e3,
                  TIMER_B: 32e3,
                  TIMER_D: 0,
                  TIMER_F: 32e3,
                  TIMER_H: 32e3,
                  TIMER_I: 0,
                  TIMER_J: 0,
                  TIMER_K: 0,
                  TIMER_L: 32e3,
                  TIMER_M: 32e3,
                  PROVISIONAL_RESPONSE_INTERVAL: 6e4
              }
          },
          754: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
              }

              function u(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function s(e, n, t) {
                  return n && u(e.prototype, n), t && u(e, t), e
              }

              function o(e, n) {
                  if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                  e.prototype = Object.create(n && n.prototype, {
                      constructor: {
                          value: e,
                          writable: !0,
                          configurable: !0
                      }
                  }), n && i(e, n)
              }

              function i(e, n) {
                  return i = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, i(e, n)
              }

              function a(e) {
                  var n = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }();
                  return function() {
                      var t, l = d(e);
                      if (n) {
                          var r = d(this).constructor;
                          t = Reflect.construct(l, arguments, r)
                      } else t = l.apply(this, arguments);
                      return c(this, t)
                  }
              }

              function c(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? h(e) : n
              }

              function h(e) {
                  if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                  return e
              }

              function d(e) {
                  return d = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, d(e)
              }
              var f = t(187).EventEmitter,
                  _ = t(356),
                  p = t(965),
                  m = t(497),
                  v = t(306),
                  g = new _("NonInviteClientTransaction"),
                  y = new _("InviteClientTransaction"),
                  C = new _("AckClientTransaction"),
                  T = new _("NonInviteServerTransaction"),
                  A = new _("InviteServerTransaction"),
                  b = {
                      STATUS_TRYING: 1,
                      STATUS_PROCEEDING: 2,
                      STATUS_CALLING: 3,
                      STATUS_ACCEPTED: 4,
                      STATUS_COMPLETED: 5,
                      STATUS_TERMINATED: 6,
                      STATUS_CONFIRMED: 7,
                      NON_INVITE_CLIENT: "nict",
                      NON_INVITE_SERVER: "nist",
                      INVITE_CLIENT: "ict",
                      INVITE_SERVER: "ist"
                  },
                  E = function(e) {
                      o(t, e);
                      var n = a(t);

                      function t(e, l, u, s) {
                          var o;
                          r(this, t), (o = n.call(this)).type = b.NON_INVITE_CLIENT, o.id = "z9hG4bK".concat(Math.floor(1e7 * Math.random())), o.ua = e, o.transport = l, o.request = u, o.eventHandlers = s;
                          var i = "SIP/2.0/".concat(l.via_transport);
                          return i += " ".concat(e.configuration.via_host, ";branch=").concat(o.id), o.request.setHeader("via", i), o.ua.newTransaction(h(o)), o
                      }
                      return s(t, [{
                          key: "stateChanged",
                          value: function(e) {
                              this.state = e, this.emit("stateChanged")
                          }
                      }, {
                          key: "send",
                          value: function() {
                              var e = this;
                              this.stateChanged(b.STATUS_TRYING), this.F = setTimeout((function() {
                                  e.timer_F()
                              }), v.TIMER_F), this.transport.send(this.request) || this.onTransportError()
                          }
                      }, {
                          key: "onTransportError",
                          value: function() {
                              g.debug("transport error occurred, deleting transaction ".concat(this.id)), clearTimeout(this.F), clearTimeout(this.K), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this), this.eventHandlers.onTransportError()
                          }
                      }, {
                          key: "timer_F",
                          value: function() {
                              g.debug("Timer F expired for transaction ".concat(this.id)), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this), this.eventHandlers.onRequestTimeout()
                          }
                      }, {
                          key: "timer_K",
                          value: function() {
                              this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this)
                          }
                      }, {
                          key: "receiveResponse",
                          value: function(e) {
                              var n = this,
                                  t = e.status_code;
                              if (t < 200) switch (this.state) {
                                  case b.STATUS_TRYING:
                                  case b.STATUS_PROCEEDING:
                                      this.stateChanged(b.STATUS_PROCEEDING), this.eventHandlers.onReceiveResponse(e)
                              } else switch (this.state) {
                                  case b.STATUS_TRYING:
                                  case b.STATUS_PROCEEDING:
                                      this.stateChanged(b.STATUS_COMPLETED), clearTimeout(this.F), 408 === t ? this.eventHandlers.onRequestTimeout() : this.eventHandlers.onReceiveResponse(e), this.K = setTimeout((function() {
                                          n.timer_K()
                                      }), v.TIMER_K)
                              }
                          }
                      }, {
                          key: "C",
                          get: function() {
                              return b
                          }
                      }]), t
                  }(f),
                  S = function(e) {
                      o(t, e);
                      var n = a(t);

                      function t(e, l, u, s) {
                          var o;
                          r(this, t), (o = n.call(this)).type = b.INVITE_CLIENT, o.id = "z9hG4bK".concat(Math.floor(1e7 * Math.random())), o.ua = e, o.transport = l, o.request = u, o.eventHandlers = s, u.transaction = h(o);
                          var i = "SIP/2.0/".concat(l.via_transport);
                          return i += " ".concat(e.configuration.via_host, ";branch=").concat(o.id), o.request.setHeader("via", i), o.ua.newTransaction(h(o)), o
                      }
                      return s(t, [{
                          key: "stateChanged",
                          value: function(e) {
                              this.state = e, this.emit("stateChanged")
                          }
                      }, {
                          key: "send",
                          value: function() {
                              var e = this;
                              this.stateChanged(b.STATUS_CALLING), this.B = setTimeout((function() {
                                  e.timer_B()
                              }), v.TIMER_B), this.transport.send(this.request) || this.onTransportError()
                          }
                      }, {
                          key: "onTransportError",
                          value: function() {
                              clearTimeout(this.B), clearTimeout(this.D), clearTimeout(this.M), this.state !== b.STATUS_ACCEPTED && (y.debug("transport error occurred, deleting transaction ".concat(this.id)), this.eventHandlers.onTransportError()), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this)
                          }
                      }, {
                          key: "timer_M",
                          value: function() {
                              y.debug("Timer M expired for transaction ".concat(this.id)), this.state === b.STATUS_ACCEPTED && (clearTimeout(this.B), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this))
                          }
                      }, {
                          key: "timer_B",
                          value: function() {
                              y.debug("Timer B expired for transaction ".concat(this.id)), this.state === b.STATUS_CALLING && (this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this), this.eventHandlers.onRequestTimeout())
                          }
                      }, {
                          key: "timer_D",
                          value: function() {
                              y.debug("Timer D expired for transaction ".concat(this.id)), clearTimeout(this.B), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this)
                          }
                      }, {
                          key: "sendACK",
                          value: function(e) {
                              var n = this,
                                  t = new m.OutgoingRequest(p.ACK, this.request.ruri, this.ua, {
                                      route_set: this.request.getHeaders("route"),
                                      call_id: this.request.getHeader("call-id"),
                                      cseq: this.request.cseq
                                  });
                              t.setHeader("from", this.request.getHeader("from")), t.setHeader("via", this.request.getHeader("via")), t.setHeader("to", e.getHeader("to")), this.D = setTimeout((function() {
                                  n.timer_D()
                              }), v.TIMER_D), this.transport.send(t)
                          }
                      }, {
                          key: "cancel",
                          value: function(e) {
                              if (this.state === b.STATUS_PROCEEDING) {
                                  var n = new m.OutgoingRequest(p.CANCEL, this.request.ruri, this.ua, {
                                      route_set: this.request.getHeaders("route"),
                                      call_id: this.request.getHeader("call-id"),
                                      cseq: this.request.cseq
                                  });
                                  n.setHeader("from", this.request.getHeader("from")), n.setHeader("via", this.request.getHeader("via")), n.setHeader("to", this.request.getHeader("to")), e && n.setHeader("reason", e), this.transport.send(n)
                              }
                          }
                      }, {
                          key: "receiveResponse",
                          value: function(e) {
                              var n = this,
                                  t = e.status_code;
                              if (t >= 100 && t <= 199) switch (this.state) {
                                  case b.STATUS_CALLING:
                                      this.stateChanged(b.STATUS_PROCEEDING), this.eventHandlers.onReceiveResponse(e);
                                      break;
                                  case b.STATUS_PROCEEDING:
                                      this.eventHandlers.onReceiveResponse(e)
                              } else if (t >= 200 && t <= 299) switch (this.state) {
                                  case b.STATUS_CALLING:
                                  case b.STATUS_PROCEEDING:
                                      this.stateChanged(b.STATUS_ACCEPTED), this.M = setTimeout((function() {
                                          n.timer_M()
                                      }), v.TIMER_M), this.eventHandlers.onReceiveResponse(e);
                                      break;
                                  case b.STATUS_ACCEPTED:
                                      this.eventHandlers.onReceiveResponse(e)
                              } else if (t >= 300 && t <= 699) switch (this.state) {
                                  case b.STATUS_CALLING:
                                  case b.STATUS_PROCEEDING:
                                      this.stateChanged(b.STATUS_COMPLETED), this.sendACK(e), this.eventHandlers.onReceiveResponse(e);
                                      break;
                                  case b.STATUS_COMPLETED:
                                      this.sendACK(e)
                              }
                          }
                      }, {
                          key: "C",
                          get: function() {
                              return b
                          }
                      }]), t
                  }(f),
                  R = function(e) {
                      o(t, e);
                      var n = a(t);

                      function t(e, l, u, s) {
                          var o;
                          r(this, t), (o = n.call(this)).id = "z9hG4bK".concat(Math.floor(1e7 * Math.random())), o.transport = l, o.request = u, o.eventHandlers = s;
                          var i = "SIP/2.0/".concat(l.via_transport);
                          return i += " ".concat(e.configuration.via_host, ";branch=").concat(o.id), o.request.setHeader("via", i), o
                      }
                      return s(t, [{
                          key: "send",
                          value: function() {
                              this.transport.send(this.request) || this.onTransportError()
                          }
                      }, {
                          key: "onTransportError",
                          value: function() {
                              C.debug("transport error occurred for transaction ".concat(this.id)), this.eventHandlers.onTransportError()
                          }
                      }, {
                          key: "C",
                          get: function() {
                              return b
                          }
                      }]), t
                  }(f),
                  w = function(e) {
                      o(t, e);
                      var n = a(t);

                      function t(e, l, u) {
                          var s;
                          return r(this, t), (s = n.call(this)).type = b.NON_INVITE_SERVER, s.id = u.via_branch, s.ua = e, s.transport = l, s.request = u, s.last_response = "", u.server_transaction = h(s), s.state = b.STATUS_TRYING, e.newTransaction(h(s)), s
                      }
                      return s(t, [{
                          key: "stateChanged",
                          value: function(e) {
                              this.state = e, this.emit("stateChanged")
                          }
                      }, {
                          key: "timer_J",
                          value: function() {
                              T.debug("Timer J expired for transaction ".concat(this.id)), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this)
                          }
                      }, {
                          key: "onTransportError",
                          value: function() {
                              this.transportError || (this.transportError = !0, T.debug("transport error occurred, deleting transaction ".concat(this.id)), clearTimeout(this.J), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this))
                          }
                      }, {
                          key: "receiveResponse",
                          value: function(e, n, t, l) {
                              var r = this;
                              if (100 === e) switch (this.state) {
                                  case b.STATUS_TRYING:
                                      this.stateChanged(b.STATUS_PROCEEDING), this.transport.send(n) || this.onTransportError();
                                      break;
                                  case b.STATUS_PROCEEDING:
                                      this.last_response = n, this.transport.send(n) ? t && t() : (this.onTransportError(), l && l())
                              } else if (e >= 200 && e <= 699) switch (this.state) {
                                  case b.STATUS_TRYING:
                                  case b.STATUS_PROCEEDING:
                                      this.stateChanged(b.STATUS_COMPLETED), this.last_response = n, this.J = setTimeout((function() {
                                          r.timer_J()
                                      }), v.TIMER_J), this.transport.send(n) ? t && t() : (this.onTransportError(), l && l())
                              }
                          }
                      }, {
                          key: "C",
                          get: function() {
                              return b
                          }
                      }]), t
                  }(f),
                  I = function(e) {
                      o(t, e);
                      var n = a(t);

                      function t(e, l, u) {
                          var s;
                          return r(this, t), (s = n.call(this)).type = b.INVITE_SERVER, s.id = u.via_branch, s.ua = e, s.transport = l, s.request = u, s.last_response = "", u.server_transaction = h(s), s.state = b.STATUS_PROCEEDING, e.newTransaction(h(s)), s.resendProvisionalTimer = null, u.reply(100), s
                      }
                      return s(t, [{
                          key: "stateChanged",
                          value: function(e) {
                              this.state = e, this.emit("stateChanged")
                          }
                      }, {
                          key: "timer_H",
                          value: function() {
                              A.debug("Timer H expired for transaction ".concat(this.id)), this.state === b.STATUS_COMPLETED && A.debug("ACK not received, dialog will be terminated"), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this)
                          }
                      }, {
                          key: "timer_I",
                          value: function() {
                              this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this)
                          }
                      }, {
                          key: "timer_L",
                          value: function() {
                              A.debug("Timer L expired for transaction ".concat(this.id)), this.state === b.STATUS_ACCEPTED && (this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this))
                          }
                      }, {
                          key: "onTransportError",
                          value: function() {
                              this.transportError || (this.transportError = !0, A.debug("transport error occurred, deleting transaction ".concat(this.id)), null !== this.resendProvisionalTimer && (clearInterval(this.resendProvisionalTimer), this.resendProvisionalTimer = null), clearTimeout(this.L), clearTimeout(this.H), clearTimeout(this.I), this.stateChanged(b.STATUS_TERMINATED), this.ua.destroyTransaction(this))
                          }
                      }, {
                          key: "resend_provisional",
                          value: function() {
                              this.transport.send(this.last_response) || this.onTransportError()
                          }
                      }, {
                          key: "receiveResponse",
                          value: function(e, n, t, l) {
                              var r = this;
                              if (e >= 100 && e <= 199 && this.state === b.STATUS_PROCEEDING && (this.transport.send(n) || this.onTransportError(), this.last_response = n), e > 100 && e <= 199 && this.state === b.STATUS_PROCEEDING) null === this.resendProvisionalTimer && (this.resendProvisionalTimer = setInterval((function() {
                                  r.resend_provisional()
                              }), v.PROVISIONAL_RESPONSE_INTERVAL));
                              else if (e >= 200 && e <= 299) switch (this.state) {
                                  case b.STATUS_PROCEEDING:
                                      this.stateChanged(b.STATUS_ACCEPTED), this.last_response = n, this.L = setTimeout((function() {
                                          r.timer_L()
                                      }), v.TIMER_L), null !== this.resendProvisionalTimer && (clearInterval(this.resendProvisionalTimer), this.resendProvisionalTimer = null);
                                  case b.STATUS_ACCEPTED:
                                      this.transport.send(n) ? t && t() : (this.onTransportError(), l && l())
                              } else e >= 300 && e <= 699 && this.state === b.STATUS_PROCEEDING && (null !== this.resendProvisionalTimer && (clearInterval(this.resendProvisionalTimer), this.resendProvisionalTimer = null), this.transport.send(n) ? (this.stateChanged(b.STATUS_COMPLETED), this.H = setTimeout((function() {
                                  r.timer_H()
                              }), v.TIMER_H), t && t()) : (this.onTransportError(), l && l()))
                          }
                      }, {
                          key: "C",
                          get: function() {
                              return b
                          }
                      }]), t
                  }(f);
              e.exports = {
                  C: b,
                  NonInviteClientTransaction: E,
                  InviteClientTransaction: S,
                  AckClientTransaction: R,
                  NonInviteServerTransaction: w,
                  InviteServerTransaction: I,
                  checkTransaction: function(e, n) {
                      var t, l = e._transactions;
                      switch (n.method) {
                          case p.INVITE:
                              if (t = l.ist[n.via_branch]) return t.state === b.STATUS_PROCEEDING && t.transport.send(t.last_response), !0;
                              break;
                          case p.ACK:
                              if (!(t = l.ist[n.via_branch])) return !1;
                              if (t.state === b.STATUS_ACCEPTED) return !1;
                              if (t.state === b.STATUS_COMPLETED) return t.state = b.STATUS_CONFIRMED, t.I = setTimeout((function() {
                                  t.timer_I()
                              }), v.TIMER_I), !0;
                              break;
                          case p.CANCEL:
                              return (t = l.ist[n.via_branch]) ? (n.reply_sl(200), t.state !== b.STATUS_PROCEEDING) : (n.reply_sl(481), !0);
                          default:
                              if (t = l.nist[n.via_branch]) {
                                  switch (t.state) {
                                      case b.STATUS_TRYING:
                                          break;
                                      case b.STATUS_PROCEEDING:
                                      case b.STATUS_COMPLETED:
                                          t.transport.send(t.last_response)
                                  }
                                  return !0
                              }
                      }
                  }
              }
          },
          103: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
              }

              function r(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }
              var u = t(356),
                  s = t(351),
                  o = t(965),
                  i = new u("Transport"),
                  a = {
                      STATUS_CONNECTED: 0,
                      STATUS_CONNECTING: 1,
                      STATUS_DISCONNECTED: 2,
                      SOCKET_STATUS_READY: 0,
                      SOCKET_STATUS_ERROR: 1,
                      recovery_options: {
                          min_interval: o.CONNECTION_RECOVERY_MIN_INTERVAL,
                          max_interval: o.CONNECTION_RECOVERY_MAX_INTERVAL
                      }
                  };
              e.exports = function() {
                  function e(n) {
                      var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : a.recovery_options;
                      l(this, e), i.debug("new()"), this.status = a.STATUS_DISCONNECTED, this.socket = null, this.sockets = [], this.recovery_options = t, this.recover_attempts = 0, this.recovery_timer = null, this.close_requested = !1;
                      try {
                          this.textDecoder = new TextDecoder("utf8")
                      } catch (e) {
                          i.warn("cannot use TextDecoder: ".concat(e))
                      }
                      if (void 0 === n) throw new TypeError("Invalid argument. undefined 'sockets' argument");
                      n instanceof Array || (n = [n]), n.forEach((function(e) {
                          if (!s.isSocket(e.socket)) throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");
                          if (e.weight && !Number(e.weight)) throw new TypeError("Invalid argument. 'weight' attribute is not a number");
                          this.sockets.push({
                              socket: e.socket,
                              weight: e.weight || 0,
                              status: a.SOCKET_STATUS_READY
                          })
                      }), this), this._getSocket()
                  }
                  var n, t;
                  return n = e, (t = [{
                      key: "connect",
                      value: function() {
                          i.debug("connect()"), this.isConnected() ? i.debug("Transport is already connected") : this.isConnecting() ? i.debug("Transport is connecting") : (this.close_requested = !1, this.status = a.STATUS_CONNECTING, this.onconnecting({
                              socket: this.socket,
                              attempts: this.recover_attempts
                          }), this.close_requested || (this.socket.onconnect = this._onConnect.bind(this), this.socket.ondisconnect = this._onDisconnect.bind(this), this.socket.ondata = this._onData.bind(this), this.socket.connect()))
                      }
                  }, {
                      key: "disconnect",
                      value: function() {
                          i.debug("close()"), this.close_requested = !0, this.recover_attempts = 0, this.status = a.STATUS_DISCONNECTED, null !== this.recovery_timer && (clearTimeout(this.recovery_timer), this.recovery_timer = null), this.socket.onconnect = function() {}, this.socket.ondisconnect = function() {}, this.socket.ondata = function() {}, this.socket.disconnect(), this.ondisconnect({
                              socket: this.socket,
                              error: !1
                          })
                      }
                  }, {
                      key: "send",
                      value: function(e) {
                          if (i.debug("send()"), !this.isConnected()) return i.warn("unable to send message, transport is not connected"), !1;
                          var n = e.toString();
                          return i.debug("sending message:\n\n".concat(n, "\n")), this.socket.send(n)
                      }
                  }, {
                      key: "isConnected",
                      value: function() {
                          return this.status === a.STATUS_CONNECTED
                      }
                  }, {
                      key: "isConnecting",
                      value: function() {
                          return this.status === a.STATUS_CONNECTING
                      }
                  }, {
                      key: "_reconnect",
                      value: function() {
                          var e = this;
                          this.recover_attempts += 1;
                          var n = Math.floor(Math.random() * Math.pow(2, this.recover_attempts) + 1);
                          n < this.recovery_options.min_interval ? n = this.recovery_options.min_interval : n > this.recovery_options.max_interval && (n = this.recovery_options.max_interval), i.debug("reconnection attempt: ".concat(this.recover_attempts, ". next connection attempt in ").concat(n, " seconds")), this.recovery_timer = setTimeout((function() {
                              e.close_requested || e.isConnected() || e.isConnecting() || (e._getSocket(), e.connect())
                          }), 1e3 * n)
                      }
                  }, {
                      key: "_getSocket",
                      value: function() {
                          var e = [];
                          if (this.sockets.forEach((function(n) {
                                  n.status !== a.SOCKET_STATUS_ERROR && (0 === e.length ? e.push(n) : n.weight > e[0].weight ? e = [n] : n.weight === e[0].weight && e.push(n))
                              })), 0 === e.length) return this.sockets.forEach((function(e) {
                              e.status = a.SOCKET_STATUS_READY
                          })), void this._getSocket();
                          var n = Math.floor(Math.random() * e.length);
                          this.socket = e[n].socket
                      }
                  }, {
                      key: "_onConnect",
                      value: function() {
                          this.recover_attempts = 0, this.status = a.STATUS_CONNECTED, null !== this.recovery_timer && (clearTimeout(this.recovery_timer), this.recovery_timer = null), this.onconnect({
                              socket: this
                          })
                      }
                  }, {
                      key: "_onDisconnect",
                      value: function(e, n, t) {
                          this.status = a.STATUS_DISCONNECTED, this.ondisconnect({
                              socket: this.socket,
                              error: e,
                              code: n,
                              reason: t
                          }), this.close_requested || (this.sockets.forEach((function(e) {
                              this.socket === e.socket && (e.status = a.SOCKET_STATUS_ERROR)
                          }), this), this._reconnect(e))
                      }
                  }, {
                      key: "_onData",
                      value: function(e) {
                          if ("\r\n" !== e) {
                              if ("string" != typeof e) {
                                  try {
                                      e = this.textDecoder ? this.textDecoder.decode(e) : String.fromCharCode.apply(null, new Uint8Array(e))
                                  } catch (e) {
                                      return void i.debug("received binary message failed to be converted into string, message discarded")
                                  }
                                  i.debug("received binary message:\n\n".concat(e, "\n"))
                              } else i.debug("received text message:\n\n".concat(e, "\n"));
                              this.ondata({
                                  transport: this,
                                  message: e
                              })
                          } else i.debug("received message with CRLF Keep Alive response")
                      }
                  }, {
                      key: "via_transport",
                      get: function() {
                          return this.socket.via_transport
                      }
                  }, {
                      key: "url",
                      get: function() {
                          return this.socket.url
                      }
                  }, {
                      key: "sip_uri",
                      get: function() {
                          return this.socket.sip_uri
                      }
                  }]) && r(n.prototype, t), e
              }()
          },
          387: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function u(e, n, t) {
                  return n && r(e.prototype, n), t && r(e, t), e
              }

              function s(e, n) {
                  return s = Object.setPrototypeOf || function(e, n) {
                      return e.__proto__ = n, e
                  }, s(e, n)
              }

              function o(e, n) {
                  return !n || "object" !== l(n) && "function" != typeof n ? i(e) : n
              }

              function i(e) {
                  if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                  return e
              }

              function a(e) {
                  return a = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                      return e.__proto__ || Object.getPrototypeOf(e)
                  }, a(e)
              }
              var c = t(187).EventEmitter,
                  h = t(356),
                  d = t(965),
                  f = t(116),
                  _ = t(906),
                  p = t(193),
                  m = t(782),
                  v = t(754),
                  g = t(103),
                  y = t(424),
                  C = t(63),
                  T = t(987),
                  A = t(407),
                  b = t(497),
                  E = t(710),
                  S = t(830),
                  R = new h("UA"),
                  w = {
                      STATUS_INIT: 0,
                      STATUS_READY: 1,
                      STATUS_USER_CLOSED: 2,
                      STATUS_NOT_READY: 3,
                      CONFIGURATION_ERROR: 1,
                      NETWORK_ERROR: 2
                  };

              function I(e) {
                  this.emit("connecting", e)
              }

              function O(e) {
                  this._status !== w.STATUS_USER_CLOSED && (this._status = w.STATUS_READY, this._error = null, this.emit("connected", e), this._dynConfiguration.register && this._registrator.register())
              }

              function N(e) {
                  for (var n = 0, t = ["nict", "ict", "nist", "ist"]; n < t.length; n++) {
                      var l = t[n];
                      for (var r in this._transactions[l]) Object.prototype.hasOwnProperty.call(this._transactions[l], r) && this._transactions[l][r].onTransportError()
                  }
                  this.emit("disconnected", e), this._registrator.onTransportClosed(), this._status !== w.STATUS_USER_CLOSED && (this._status = w.STATUS_NOT_READY, this._error = w.NETWORK_ERROR)
              }

              function k(e) {
                  var n = e.transport,
                      t = e.message;
                  if ((t = A.parseMessage(t, this)) && !(this._status === w.STATUS_USER_CLOSED && t instanceof b.IncomingRequest) && E(t, this, n))
                      if (t instanceof b.IncomingRequest) t.transport = n, this.receiveRequest(t);
                      else if (t instanceof b.IncomingResponse) {
                      var l;
                      switch (t.method) {
                          case d.INVITE:
                              (l = this._transactions.ict[t.via_branch]) && l.receiveResponse(t);
                              break;
                          case d.ACK:
                              break;
                          default:
                              (l = this._transactions.nict[t.via_branch]) && l.receiveResponse(t)
                      }
                  }
              }
              e.exports = function(e) {
                  ! function(e, n) {
                      if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");
                      e.prototype = Object.create(n && n.prototype, {
                          constructor: {
                              value: e,
                              writable: !0,
                              configurable: !0
                          }
                      }), n && s(e, n)
                  }(r, e);
                  var n, t, l = (n = r, t = function() {
                      if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                      if (Reflect.construct.sham) return !1;
                      if ("function" == typeof Proxy) return !0;
                      try {
                          return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
                      } catch (e) {
                          return !1
                      }
                  }(), function() {
                      var e, l = a(n);
                      if (t) {
                          var r = a(this).constructor;
                          e = Reflect.construct(l, arguments, r)
                      } else e = l.apply(this, arguments);
                      return o(this, e)
                  });

                  function r(e) {
                      var n;
                      if (function(e, n) {
                              if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                          }(this, r), R.debug("new() [configuration:%o]", e), (n = l.call(this))._cache = {
                              credentials: {}
                          }, n._configuration = Object.assign({}, S.settings), n._dynConfiguration = {}, n._dialogs = {}, n._applicants = {}, n._sessions = {}, n._transport = null, n._contact = null, n._status = w.STATUS_INIT, n._error = null, n._transactions = {
                              nist: {},
                              nict: {},
                              ist: {},
                              ict: {}
                          }, n._data = {}, n._closeTimer = null, void 0 === e) throw new TypeError("Not enough arguments");
                      try {
                          n._loadConfig(e)
                      } catch (e) {
                          throw n._status = w.STATUS_NOT_READY, n._error = w.CONFIGURATION_ERROR, e
                      }
                      return n._registrator = new f(i(n)), n
                  }
                  return u(r, null, [{
                      key: "C",
                      get: function() {
                          return w
                      }
                  }]), u(r, [{
                      key: "start",
                      value: function() {
                          R.debug("start()"), this._status === w.STATUS_INIT ? this._transport.connect() : this._status === w.STATUS_USER_CLOSED ? (R.debug("restarting UA"), null !== this._closeTimer && (clearTimeout(this._closeTimer), this._closeTimer = null, this._transport.disconnect()), this._status = w.STATUS_INIT, this._transport.connect()) : this._status === w.STATUS_READY ? R.debug("UA is in READY status, not restarted") : R.debug("ERROR: connection is down, Auto-Recovery system is trying to reconnect"), this._dynConfiguration.register = this._configuration.register
                      }
                  }, {
                      key: "register",
                      value: function() {
                          R.debug("register()"), this._dynConfiguration.register = !0, this._registrator.register()
                      }
                  }, {
                      key: "unregister",
                      value: function(e) {
                          R.debug("unregister()"), this._dynConfiguration.register = !1, this._registrator.unregister(e)
                      }
                  }, {
                      key: "registrator",
                      value: function() {
                          return this._registrator
                      }
                  }, {
                      key: "isRegistered",
                      value: function() {
                          return this._registrator.registered
                      }
                  }, {
                      key: "isConnected",
                      value: function() {
                          return this._transport.isConnected()
                      }
                  }, {
                      key: "call",
                      value: function(e, n) {
                          R.debug("call()");
                          var t = new _(this);
                          return t.connect(e, n), t
                      }
                  }, {
                      key: "sendMessage",
                      value: function(e, n, t) {
                          R.debug("sendMessage()");
                          var l = new p(this);
                          return l.send(e, n, t), l
                      }
                  }, {
                      key: "sendOptions",
                      value: function(e, n, t) {
                          R.debug("sendOptions()");
                          var l = new m(this);
                          return l.send(e, n, t), l
                      }
                  }, {
                      key: "terminateSessions",
                      value: function(e) {
                          for (var n in R.debug("terminateSessions()"), this._sessions) this._sessions[n].isEnded() || this._sessions[n].terminate(e)
                      }
                  }, {
                      key: "stop",
                      value: function() {
                          var e = this;
                          if (R.debug("stop()"), this._dynConfiguration = {}, this._status !== w.STATUS_USER_CLOSED) {
                              this._registrator.close();
                              var n = Object.keys(this._sessions).length;
                              for (var t in this._sessions)
                                  if (Object.prototype.hasOwnProperty.call(this._sessions, t)) {
                                      R.debug("closing session ".concat(t));
                                      try {
                                          this._sessions[t].terminate()
                                      } catch (e) {}
                                  } for (var l in this._applicants)
                                  if (Object.prototype.hasOwnProperty.call(this._applicants, l)) try {
                                      this._applicants[l].close()
                                  } catch (e) {}
                              this._status = w.STATUS_USER_CLOSED, 0 === Object.keys(this._transactions.nict).length + Object.keys(this._transactions.nist).length + Object.keys(this._transactions.ict).length + Object.keys(this._transactions.ist).length && 0 === n ? this._transport.disconnect() : this._closeTimer = setTimeout((function() {
                                  e._closeTimer = null, e._transport.disconnect()
                              }), 2e3)
                          } else R.debug("UA already closed")
                      }
                  }, {
                      key: "normalizeTarget",
                      value: function(e) {
                          return y.normalizeTarget(e, this._configuration.hostport_params)
                      }
                  }, {
                      key: "get",
                      value: function(e) {
                          switch (e) {
                              case "authorization_user":
                                  return this._configuration.authorization_user;
                              case "realm":
                                  return this._configuration.realm;
                              case "ha1":
                                  return this._configuration.ha1;
                              case "authorization_jwt":
                                  return this._configuration.authorization_jwt;
                              default:
                                  return void R.warn('get() | cannot get "%s" parameter in runtime', e)
                          }
                      }
                  }, {
                      key: "set",
                      value: function(e, n) {
                          switch (e) {
                              case "authorization_user":
                                  this._configuration.authorization_user = String(n);
                                  break;
                              case "password":
                                  this._configuration.password = String(n);
                                  break;
                              case "realm":
                                  this._configuration.realm = String(n);
                                  break;
                              case "ha1":
                                  this._configuration.ha1 = String(n), this._configuration.password = null;
                                  break;
                              case "authorization_jwt":
                                  this._configuration.authorization_jwt = String(n);
                                  break;
                              case "display_name":
                                  this._configuration.display_name = n;
                                  break;
                              default:
                                  return R.warn('set() | cannot set "%s" parameter in runtime', e), !1
                          }
                          return !0
                      }
                  }, {
                      key: "newTransaction",
                      value: function(e) {
                          this._transactions[e.type][e.id] = e, this.emit("newTransaction", {
                              transaction: e
                          })
                      }
                  }, {
                      key: "destroyTransaction",
                      value: function(e) {
                          delete this._transactions[e.type][e.id], this.emit("transactionDestroyed", {
                              transaction: e
                          })
                      }
                  }, {
                      key: "newDialog",
                      value: function(e) {
                          this._dialogs[e.id] = e
                      }
                  }, {
                      key: "destroyDialog",
                      value: function(e) {
                          delete this._dialogs[e.id]
                      }
                  }, {
                      key: "newMessage",
                      value: function(e, n) {
                          this._applicants[e] = e, this.emit("newMessage", n)
                      }
                  }, {
                      key: "newOptions",
                      value: function(e, n) {
                          this._applicants[e] = e, this.emit("newOptions", n)
                      }
                  }, {
                      key: "destroyMessage",
                      value: function(e) {
                          delete this._applicants[e]
                      }
                  }, {
                      key: "newRTCSession",
                      value: function(e, n) {
                          this._sessions[e.id] = e, this.emit("newRTCSession", n)
                      }
                  }, {
                      key: "destroyRTCSession",
                      value: function(e) {
                          delete this._sessions[e.id]
                      }
                  }, {
                      key: "registered",
                      value: function(e) {
                          this.emit("registered", e)
                      }
                  }, {
                      key: "unregistered",
                      value: function(e) {
                          this.emit("unregistered", e)
                      }
                  }, {
                      key: "registrationFailed",
                      value: function(e) {
                          this.emit("registrationFailed", e)
                      }
                  }, {
                      key: "receiveRequest",
                      value: function(e) {
                          var n = e.method;
                          if (e.ruri.user !== this._configuration.uri.user && e.ruri.user !== this._contact.uri.user) return R.debug("Request-URI does not point to us"), void(e.method !== d.ACK && e.reply_sl(404));
                          if (e.ruri.scheme !== d.SIPS) {
                              if (!v.checkTransaction(this, e)) {
                                  if (n === d.INVITE ? new v.InviteServerTransaction(this, this._transport, e) : n !== d.ACK && n !== d.CANCEL && new v.NonInviteServerTransaction(this, this._transport, e), n === d.OPTIONS) {
                                      if (0 === this.listeners("newOptions").length) return void e.reply(200);
                                      new m(this).init_incoming(e)
                                  } else if (n === d.MESSAGE) {
                                      if (0 === this.listeners("newMessage").length) return void e.reply(405);
                                      new p(this).init_incoming(e)
                                  } else if (n === d.INVITE && !e.to_tag && 0 === this.listeners("newRTCSession").length) return void e.reply(405);
                                  var t, l;
                                  if (e.to_tag)(t = this._findDialog(e.call_id, e.from_tag, e.to_tag)) ? t.receiveRequest(e) : n === d.NOTIFY ? (l = this._findSession(e)) ? l.receiveRequest(e) : (R.debug("received NOTIFY request for a non existent subscription"), e.reply(481, "Subscription does not exist")) : n !== d.ACK && e.reply(481);
                                  else switch (n) {
                                      case d.INVITE:
                                          if (window.RTCPeerConnection)
                                              if (e.hasHeader("replaces")) {
                                                  var r = e.replaces;
                                                  (t = this._findDialog(r.call_id, r.from_tag, r.to_tag)) ? (l = t.owner).isEnded() ? e.reply(603) : l.receiveRequest(e): e.reply(481)
                                              } else(l = new _(this)).init_incoming(e);
                                          else R.warn("INVITE received but WebRTC is not supported"), e.reply(488);
                                          break;
                                      case d.BYE:
                                          e.reply(481);
                                          break;
                                      case d.CANCEL:
                                          (l = this._findSession(e)) ? l.receiveRequest(e): R.debug("received CANCEL request for a non existent session");
                                          break;
                                      case d.ACK:
                                          break;
                                      case d.NOTIFY:
                                          this.emit("sipEvent", {
                                              event: e.event,
                                              request: e
                                          }), e.reply(200);
                                          break;
                                      default:
                                          e.reply(405)
                                  }
                              }
                          } else e.reply_sl(416)
                      }
                  }, {
                      key: "_findSession",
                      value: function(e) {
                          var n = e.call_id,
                              t = e.from_tag,
                              l = e.to_tag,
                              r = n + t,
                              u = this._sessions[r],
                              s = n + l,
                              o = this._sessions[s];
                          return u || o || null
                      }
                  }, {
                      key: "_findDialog",
                      value: function(e, n, t) {
                          var l = e + n + t,
                              r = this._dialogs[l];
                          return r || (l = e + t + n, (r = this._dialogs[l]) || null)
                      }
                  }, {
                      key: "_loadConfig",
                      value: function(e) {
                          try {
                              S.load(this._configuration, e)
                          } catch (e) {
                              throw e
                          }
                          0 === this._configuration.display_name && (this._configuration.display_name = "0"), this._configuration.instance_id || (this._configuration.instance_id = y.newUUID()), this._configuration.jssip_id = y.createRandomToken(5);
                          var n = this._configuration.uri.clone();
                          n.user = null, this._configuration.hostport_params = n.toString().replace(/^sip:/i, "");
                          try {
                              this._transport = new g(this._configuration.sockets, {
                                  max_interval: this._configuration.connection_recovery_max_interval,
                                  min_interval: this._configuration.connection_recovery_min_interval
                              }), this._transport.onconnecting = I.bind(this), this._transport.onconnect = O.bind(this), this._transport.ondisconnect = N.bind(this), this._transport.ondata = k.bind(this)
                          } catch (e) {
                              throw R.warn(e), new C.ConfigurationError("sockets", this._configuration.sockets)
                          }
                          if (delete this._configuration.sockets, this._configuration.authorization_user || (this._configuration.authorization_user = this._configuration.uri.user), !this._configuration.registrar_server) {
                              var t = this._configuration.uri.clone();
                              t.user = null, t.clearParams(), t.clearHeaders(), this._configuration.registrar_server = t
                          }
                          this._configuration.no_answer_timeout *= 1e3, this._configuration.contact_uri ? this._configuration.via_host = this._configuration.contact_uri.host : this._configuration.contact_uri = new T("sip", y.createRandomToken(8), this._configuration.via_host, null, {
                              transport: "ws"
                          }), this._contact = {
                              pub_gruu: null,
                              temp_gruu: null,
                              uri: this._configuration.contact_uri,
                              toString: function() {
                                  var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                                      n = e.anonymous || null,
                                      t = e.outbound || null,
                                      l = "<";
                                  return l += n ? this.temp_gruu || "sip:anonymous@anonymous.invalid;transport=ws" : this.pub_gruu || this.uri.toString(), !t || (n ? this.temp_gruu : this.pub_gruu) || (l += ";ob"), l + ">"
                              }
                          };
                          var l = ["authorization_user", "password", "realm", "ha1", "authorization_jwt", "display_name", "register"];
                          for (var r in this._configuration) Object.prototype.hasOwnProperty.call(this._configuration, r) && (-1 !== l.indexOf(r) ? Object.defineProperty(this._configuration, r, {
                              writable: !0,
                              configurable: !1
                          }) : Object.defineProperty(this._configuration, r, {
                              writable: !1,
                              configurable: !1
                          }));
                          for (var u in R.debug("configuration parameters after validation:"), this._configuration)
                              if (Object.prototype.hasOwnProperty.call(S.settings, u)) switch (u) {
                                  case "uri":
                                  case "registrar_server":
                                      R.debug("- ".concat(u, ": ").concat(this._configuration[u]));
                                      break;
                                  case "password":
                                  case "ha1":
                                  case "authorization_jwt":
                                      R.debug("- ".concat(u, ": NOT SHOWN"));
                                      break;
                                  default:
                                      R.debug("- ".concat(u, ": ").concat(JSON.stringify(this._configuration[u])))
                              }
                      }
                  }, {
                      key: "C",
                      get: function() {
                          return w
                      }
                  }, {
                      key: "status",
                      get: function() {
                          return this._status
                      }
                  }, {
                      key: "contact",
                      get: function() {
                          return this._contact
                      }
                  }, {
                      key: "configuration",
                      get: function() {
                          return this._configuration
                      }
                  }, {
                      key: "transport",
                      get: function() {
                          return this._transport
                      }
                  }]), r
              }(c)
          },
          987: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  var t;
                  if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                      if (Array.isArray(e) || (t = function(e, n) {
                              if (e) {
                                  if ("string" == typeof e) return r(e, n);
                                  var t = Object.prototype.toString.call(e).slice(8, -1);
                                  return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? r(e, n) : void 0
                              }
                          }(e)) || n && e && "number" == typeof e.length) {
                          t && (e = t);
                          var l = 0,
                              u = function() {};
                          return {
                              s: u,
                              n: function() {
                                  return l >= e.length ? {
                                      done: !0
                                  } : {
                                      done: !1,
                                      value: e[l++]
                                  }
                              },
                              e: function(e) {
                                  throw e
                              },
                              f: u
                          }
                      }
                      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                  }
                  var s, o = !0,
                      i = !1;
                  return {
                      s: function() {
                          t = e[Symbol.iterator]()
                      },
                      n: function() {
                          var e = t.next();
                          return o = e.done, e
                      },
                      e: function(e) {
                          i = !0, s = e
                      },
                      f: function() {
                          try {
                              o || null == t.return || t.return()
                          } finally {
                              if (i) throw s
                          }
                      }
                  }
              }

              function r(e, n) {
                  (null == n || n > e.length) && (n = e.length);
                  for (var t = 0, l = new Array(n); t < n; t++) l[t] = e[t];
                  return l
              }

              function u(e, n) {
                  if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
              }

              function s(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }

              function o(e, n, t) {
                  return n && s(e.prototype, n), t && s(e, t), e
              }
              var i = t(965),
                  a = t(424),
                  c = t(790);
              e.exports = function() {
                  function e(n, t, l, r) {
                      var s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : {},
                          o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : {};
                      if (u(this, e), !l) throw new TypeError('missing or invalid "host" parameter');
                      for (var a in this._parameters = {}, this._headers = {}, this._scheme = n || i.SIP, this._user = t, this._host = l, this._port = r, s) Object.prototype.hasOwnProperty.call(s, a) && this.setParam(a, s[a]);
                      for (var c in o) Object.prototype.hasOwnProperty.call(o, c) && this.setHeader(c, o[c])
                  }
                  return o(e, null, [{
                      key: "parse",
                      value: function(e) {
                          return -1 !== (e = c.parse(e, "SIP_URI")) ? e : void 0
                      }
                  }]), o(e, [{
                      key: "setParam",
                      value: function(e, n) {
                          e && (this._parameters[e.toLowerCase()] = null == n ? null : n.toString())
                      }
                  }, {
                      key: "getParam",
                      value: function(e) {
                          if (e) return this._parameters[e.toLowerCase()]
                      }
                  }, {
                      key: "hasParam",
                      value: function(e) {
                          if (e) return !!this._parameters.hasOwnProperty(e.toLowerCase())
                      }
                  }, {
                      key: "deleteParam",
                      value: function(e) {
                          if (e = e.toLowerCase(), this._parameters.hasOwnProperty(e)) {
                              var n = this._parameters[e];
                              return delete this._parameters[e], n
                          }
                      }
                  }, {
                      key: "clearParams",
                      value: function() {
                          this._parameters = {}
                      }
                  }, {
                      key: "setHeader",
                      value: function(e, n) {
                          this._headers[a.headerize(e)] = Array.isArray(n) ? n : [n]
                      }
                  }, {
                      key: "getHeader",
                      value: function(e) {
                          if (e) return this._headers[a.headerize(e)]
                      }
                  }, {
                      key: "hasHeader",
                      value: function(e) {
                          if (e) return !!this._headers.hasOwnProperty(a.headerize(e))
                      }
                  }, {
                      key: "deleteHeader",
                      value: function(e) {
                          if (e = a.headerize(e), this._headers.hasOwnProperty(e)) {
                              var n = this._headers[e];
                              return delete this._headers[e], n
                          }
                      }
                  }, {
                      key: "clearHeaders",
                      value: function() {
                          this._headers = {}
                      }
                  }, {
                      key: "clone",
                      value: function() {
                          return new e(this._scheme, this._user, this._host, this._port, JSON.parse(JSON.stringify(this._parameters)), JSON.parse(JSON.stringify(this._headers)))
                      }
                  }, {
                      key: "toString",
                      value: function() {
                          var e = [],
                              n = "".concat(this._scheme, ":");
                          for (var t in this._user && (n += "".concat(a.escapeUser(this._user), "@")), n += this._host, (this._port || 0 === this._port) && (n += ":".concat(this._port)), this._parameters) Object.prototype.hasOwnProperty.call(this._parameters, t) && (n += ";".concat(t), null !== this._parameters[t] && (n += "=".concat(this._parameters[t])));
                          for (var r in this._headers)
                              if (Object.prototype.hasOwnProperty.call(this._headers, r)) {
                                  var u, s = l(this._headers[r]);
                                  try {
                                      for (s.s(); !(u = s.n()).done;) {
                                          var o = u.value;
                                          e.push("".concat(r, "=").concat(o))
                                      }
                                  } catch (e) {
                                      s.e(e)
                                  } finally {
                                      s.f()
                                  }
                              } return e.length > 0 && (n += "?".concat(e.join("&"))), n
                      }
                  }, {
                      key: "toAor",
                      value: function(e) {
                          var n = "".concat(this._scheme, ":");
                          return this._user && (n += "".concat(a.escapeUser(this._user), "@")), n += this._host, e && (this._port || 0 === this._port) && (n += ":".concat(this._port)), n
                      }
                  }, {
                      key: "scheme",
                      get: function() {
                          return this._scheme
                      },
                      set: function(e) {
                          this._scheme = e.toLowerCase()
                      }
                  }, {
                      key: "user",
                      get: function() {
                          return this._user
                      },
                      set: function(e) {
                          this._user = e
                      }
                  }, {
                      key: "host",
                      get: function() {
                          return this._host
                      },
                      set: function(e) {
                          this._host = e.toLowerCase()
                      }
                  }, {
                      key: "port",
                      get: function() {
                          return this._port
                      },
                      set: function(e) {
                          this._port = 0 === e ? e : parseInt(e, 10) || null
                      }
                  }]), e
              }()
          },
          424: (e, n, t) => {
              "use strict";

              function l(e) {
                  return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                      return typeof e
                  } : function(e) {
                      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                  }, l(e)
              }

              function r(e, n) {
                  var t;
                  if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                      if (Array.isArray(e) || (t = function(e, n) {
                              if (e) {
                                  if ("string" == typeof e) return u(e, n);
                                  var t = Object.prototype.toString.call(e).slice(8, -1);
                                  return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? u(e, n) : void 0
                              }
                          }(e)) || n && e && "number" == typeof e.length) {
                          t && (e = t);
                          var l = 0,
                              r = function() {};
                          return {
                              s: r,
                              n: function() {
                                  return l >= e.length ? {
                                      done: !0
                                  } : {
                                      done: !1,
                                      value: e[l++]
                                  }
                              },
                              e: function(e) {
                                  throw e
                              },
                              f: r
                          }
                      }
                      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                  }
                  var s, o = !0,
                      i = !1;
                  return {
                      s: function() {
                          t = e[Symbol.iterator]()
                      },
                      n: function() {
                          var e = t.next();
                          return o = e.done, e
                      },
                      e: function(e) {
                          i = !0, s = e
                      },
                      f: function() {
                          try {
                              o || null == t.return || t.return()
                          } finally {
                              if (i) throw s
                          }
                      }
                  }
              }

              function u(e, n) {
                  (null == n || n > e.length) && (n = e.length);
                  for (var t = 0, l = new Array(n); t < n; t++) l[t] = e[t];
                  return l
              }
              var s = t(965),
                  o = t(987),
                  i = t(790);
              n.str_utf8_length = function(e) {
                  return unescape(encodeURIComponent(e)).length
              };
              var a = n.isFunction = function(e) {
                  return void 0 !== e && "[object Function]" === Object.prototype.toString.call(e)
              };
              n.isString = function(e) {
                  return void 0 !== e && "[object String]" === Object.prototype.toString.call(e)
              }, n.isDecimal = function(e) {
                  return !isNaN(e) && parseFloat(e) === parseInt(e, 10)
              }, n.isEmpty = function(e) {
                  return null === e || "" === e || void 0 === e || Array.isArray(e) && 0 === e.length || "number" == typeof e && isNaN(e)
              }, n.hasMethods = function(e) {
                  for (var n = arguments.length, t = new Array(n > 1 ? n - 1 : 0), l = 1; l < n; l++) t[l - 1] = arguments[l];
                  for (var r = 0, u = t; r < u.length; r++) {
                      var s = u[r];
                      if (a(e[s])) return !1
                  }
                  return !0
              };
              var c = n.createRandomToken = function(e) {
                  var n, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 32,
                      l = "";
                  for (n = 0; n < e; n++) l += (Math.random() * t | 0).toString(t);
                  return l
              };
              n.newTag = function() {
                  return c(10)
              }, n.newUUID = function() {
                  return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(e) {
                      var n = 16 * Math.random() | 0;
                      return ("x" === e ? n : 3 & n | 8).toString(16)
                  }))
              }, n.hostType = function(e) {
                  if (e) return -1 !== (e = i.parse(e, "host")) ? e.host_type : void 0
              };
              var h = n.escapeUser = function(e) {
                  return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi, ":").replace(/%2B/gi, "+").replace(/%3F/gi, "?").replace(/%2F/gi, "/")
              };
              n.normalizeTarget = function(e, n) {
                  if (e) {
                      if (e instanceof o) return e;
                      if ("string" == typeof e) {
                          var t, l, r, u = e.split("@");
                          switch (u.length) {
                              case 1:
                                  if (!n) return;
                                  t = e, l = n;
                                  break;
                              case 2:
                                  t = u[0], l = u[1];
                                  break;
                              default:
                                  t = u.slice(0, u.length - 1).join("@"), l = u[u.length - 1]
                          }
                          return t = t.replace(/^(sips?|tel):/i, ""), /^[-.()]*\+?[0-9\-.()]+$/.test(t) && (t = t.replace(/[-.()]/g, "")), e = "".concat(s.SIP, ":").concat(h(t), "@").concat(l), (r = o.parse(e)) ? r : void 0
                      }
                  }
              }, n.headerize = function(e) {
                  var n, t = {
                          "Call-Id": "Call-ID",
                          Cseq: "CSeq",
                          "Www-Authenticate": "WWW-Authenticate"
                      },
                      l = e.toLowerCase().replace(/_/g, "-").split("-"),
                      r = "",
                      u = l.length;
                  for (n = 0; n < u; n++) 0 !== n && (r += "-"), r += l[n].charAt(0).toUpperCase() + l[n].substring(1);
                  return t[r] && (r = t[r]), r
              }, n.sipErrorCause = function(e) {
                  for (var n in s.SIP_ERROR_CAUSES)
                      if (-1 !== s.SIP_ERROR_CAUSES[n].indexOf(e)) return s.causes[n];
                  return s.causes.SIP_FAILURE_CODE
              }, n.getRandomTestNetIP = function() {
                  return "192.0.2.".concat((1, 254, Math.floor(254 * Math.random() + 1)))
              }, n.calculateMD5 = function(e) {
                  function n(e, n) {
                      return e << n | e >>> 32 - n
                  }

                  function t(e, n) {
                      var t = 2147483648 & e,
                          l = 2147483648 & n,
                          r = 1073741824 & e,
                          u = 1073741824 & n,
                          s = (1073741823 & e) + (1073741823 & n);
                      return r & u ? 2147483648 ^ s ^ t ^ l : r | u ? 1073741824 & s ? 3221225472 ^ s ^ t ^ l : 1073741824 ^ s ^ t ^ l : s ^ t ^ l
                  }

                  function l(e, l, r, u, s, o, i) {
                      return e = t(e, t(t(function(e, n, t) {
                          return e & n | ~e & t
                      }(l, r, u), s), i)), t(n(e, o), l)
                  }

                  function r(e, l, r, u, s, o, i) {
                      return e = t(e, t(t(function(e, n, t) {
                          return e & t | n & ~t
                      }(l, r, u), s), i)), t(n(e, o), l)
                  }

                  function u(e, l, r, u, s, o, i) {
                      return e = t(e, t(t(function(e, n, t) {
                          return e ^ n ^ t
                      }(l, r, u), s), i)), t(n(e, o), l)
                  }

                  function s(e, l, r, u, s, o, i) {
                      return e = t(e, t(t(function(e, n, t) {
                          return n ^ (e | ~t)
                      }(l, r, u), s), i)), t(n(e, o), l)
                  }

                  function o(e) {
                      var n, t = "",
                          l = "";
                      for (n = 0; n <= 3; n++) t += (l = "0".concat((e >>> 8 * n & 255).toString(16))).substr(l.length - 2, 2);
                      return t
                  }
                  var i, a, c, h, d, f, _, p, m, v;
                  for (i = function(e) {
                          for (var n, t = e.length, l = t + 8, r = 16 * ((l - l % 64) / 64 + 1), u = new Array(r - 1), s = 0, o = 0; o < t;) s = o % 4 * 8, u[n = (o - o % 4) / 4] = u[n] | e.charCodeAt(o) << s, o++;
                          return s = o % 4 * 8, u[n = (o - o % 4) / 4] = u[n] | 128 << s, u[r - 2] = t << 3, u[r - 1] = t >>> 29, u
                      }(e = function(e) {
                          e = e.replace(/\r\n/g, "\n");
                          for (var n = "", t = 0; t < e.length; t++) {
                              var l = e.charCodeAt(t);
                              l < 128 ? n += String.fromCharCode(l) : l > 127 && l < 2048 ? (n += String.fromCharCode(l >> 6 | 192), n += String.fromCharCode(63 & l | 128)) : (n += String.fromCharCode(l >> 12 | 224), n += String.fromCharCode(l >> 6 & 63 | 128), n += String.fromCharCode(63 & l | 128))
                          }
                          return n
                      }(e)), _ = 1732584193, p = 4023233417, m = 2562383102, v = 271733878, a = 0; a < i.length; a += 16) c = _, h = p, d = m, f = v, _ = l(_, p, m, v, i[a + 0], 7, 3614090360), v = l(v, _, p, m, i[a + 1], 12, 3905402710), m = l(m, v, _, p, i[a + 2], 17, 606105819), p = l(p, m, v, _, i[a + 3], 22, 3250441966), _ = l(_, p, m, v, i[a + 4], 7, 4118548399), v = l(v, _, p, m, i[a + 5], 12, 1200080426), m = l(m, v, _, p, i[a + 6], 17, 2821735955), p = l(p, m, v, _, i[a + 7], 22, 4249261313), _ = l(_, p, m, v, i[a + 8], 7, 1770035416), v = l(v, _, p, m, i[a + 9], 12, 2336552879), m = l(m, v, _, p, i[a + 10], 17, 4294925233), p = l(p, m, v, _, i[a + 11], 22, 2304563134), _ = l(_, p, m, v, i[a + 12], 7, 1804603682), v = l(v, _, p, m, i[a + 13], 12, 4254626195), m = l(m, v, _, p, i[a + 14], 17, 2792965006), _ = r(_, p = l(p, m, v, _, i[a + 15], 22, 1236535329), m, v, i[a + 1], 5, 4129170786), v = r(v, _, p, m, i[a + 6], 9, 3225465664), m = r(m, v, _, p, i[a + 11], 14, 643717713), p = r(p, m, v, _, i[a + 0], 20, 3921069994), _ = r(_, p, m, v, i[a + 5], 5, 3593408605), v = r(v, _, p, m, i[a + 10], 9, 38016083), m = r(m, v, _, p, i[a + 15], 14, 3634488961), p = r(p, m, v, _, i[a + 4], 20, 3889429448), _ = r(_, p, m, v, i[a + 9], 5, 568446438), v = r(v, _, p, m, i[a + 14], 9, 3275163606), m = r(m, v, _, p, i[a + 3], 14, 4107603335), p = r(p, m, v, _, i[a + 8], 20, 1163531501), _ = r(_, p, m, v, i[a + 13], 5, 2850285829), v = r(v, _, p, m, i[a + 2], 9, 4243563512), m = r(m, v, _, p, i[a + 7], 14, 1735328473), _ = u(_, p = r(p, m, v, _, i[a + 12], 20, 2368359562), m, v, i[a + 5], 4, 4294588738), v = u(v, _, p, m, i[a + 8], 11, 2272392833), m = u(m, v, _, p, i[a + 11], 16, 1839030562), p = u(p, m, v, _, i[a + 14], 23, 4259657740), _ = u(_, p, m, v, i[a + 1], 4, 2763975236), v = u(v, _, p, m, i[a + 4], 11, 1272893353), m = u(m, v, _, p, i[a + 7], 16, 4139469664), p = u(p, m, v, _, i[a + 10], 23, 3200236656), _ = u(_, p, m, v, i[a + 13], 4, 681279174), v = u(v, _, p, m, i[a + 0], 11, 3936430074), m = u(m, v, _, p, i[a + 3], 16, 3572445317), p = u(p, m, v, _, i[a + 6], 23, 76029189), _ = u(_, p, m, v, i[a + 9], 4, 3654602809), v = u(v, _, p, m, i[a + 12], 11, 3873151461), m = u(m, v, _, p, i[a + 15], 16, 530742520), _ = s(_, p = u(p, m, v, _, i[a + 2], 23, 3299628645), m, v, i[a + 0], 6, 4096336452), v = s(v, _, p, m, i[a + 7], 10, 1126891415), m = s(m, v, _, p, i[a + 14], 15, 2878612391), p = s(p, m, v, _, i[a + 5], 21, 4237533241), _ = s(_, p, m, v, i[a + 12], 6, 1700485571), v = s(v, _, p, m, i[a + 3], 10, 2399980690), m = s(m, v, _, p, i[a + 10], 15, 4293915773), p = s(p, m, v, _, i[a + 1], 21, 2240044497), _ = s(_, p, m, v, i[a + 8], 6, 1873313359), v = s(v, _, p, m, i[a + 15], 10, 4264355552), m = s(m, v, _, p, i[a + 6], 15, 2734768916), p = s(p, m, v, _, i[a + 13], 21, 1309151649), _ = s(_, p, m, v, i[a + 4], 6, 4149444226), v = s(v, _, p, m, i[a + 11], 10, 3174756917), m = s(m, v, _, p, i[a + 2], 15, 718787259), p = s(p, m, v, _, i[a + 9], 21, 3951481745), _ = t(_, c), p = t(p, h), m = t(m, d), v = t(v, f);
                  return (o(_) + o(p) + o(m) + o(v)).toLowerCase()
              }, n.closeMediaStream = function(e) {
                  if (e) try {
                      if (e.getTracks) {
                          var n, t = r(e.getTracks());
                          try {
                              for (t.s(); !(n = t.n()).done;) n.value.stop()
                          } catch (e) {
                              t.e(e)
                          } finally {
                              t.f()
                          }
                      } else {
                          var u, s = r(e.getAudioTracks());
                          try {
                              for (s.s(); !(u = s.n()).done;) u.value.stop()
                          } catch (e) {
                              s.e(e)
                          } finally {
                              s.f()
                          }
                          var o, i = r(e.getVideoTracks());
                          try {
                              for (i.s(); !(o = i.n()).done;) o.value.stop()
                          } catch (e) {
                              i.e(e)
                          } finally {
                              i.f()
                          }
                      }
                  } catch (n) {
                      "function" != typeof e.stop && "object" !== l(e.stop) || e.stop()
                  }
              }, n.cloneArray = function(e) {
                  return e && e.slice() || []
              }, n.cloneObject = function(e) {
                  var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                  return e && Object.assign({}, e) || n
              }
          },
          288: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  for (var t = 0; t < n.length; t++) {
                      var l = n[t];
                      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(e, l.key, l)
                  }
              }
              var r = t(356),
                  u = t(790),
                  s = new r("WebSocketInterface");
              e.exports = function() {
                  function e(n) {
                      ! function(e, n) {
                          if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function")
                      }(this, e), s.debug('new() [url:"%s"]', n), this._url = n, this._sip_uri = null, this._via_transport = null, this._ws = null;
                      var t = u.parse(n, "absoluteURI");
                      if (-1 === t) throw s.warn("invalid WebSocket URI: ".concat(n)), new TypeError("Invalid argument: ".concat(n));
                      if ("wss" !== t.scheme && "ws" !== t.scheme) throw s.warn("invalid WebSocket URI scheme: ".concat(t.scheme)), new TypeError("Invalid argument: ".concat(n));
                      this._sip_uri = "sip:".concat(t.host).concat(t.port ? ":".concat(t.port) : "", ";transport=ws"), this._via_transport = t.scheme.toUpperCase()
                  }
                  var n, t;
                  return n = e, (t = [{
                      key: "connect",
                      value: function() {
                          if (s.debug("connect()"), this.isConnected()) s.debug("WebSocket ".concat(this._url, " is already connected"));
                          else if (this.isConnecting()) s.debug("WebSocket ".concat(this._url, " is connecting"));
                          else {
                              this._ws && this.disconnect(), s.debug("connecting to WebSocket ".concat(this._url));
                              try {
                                  this._ws = new WebSocket(this._url, "sip"), this._ws.binaryType = "arraybuffer", this._ws.onopen = this._onOpen.bind(this), this._ws.onclose = this._onClose.bind(this), this._ws.onmessage = this._onMessage.bind(this), this._ws.onerror = this._onError.bind(this)
                              } catch (e) {
                                  this._onError(e)
                              }
                          }
                      }
                  }, {
                      key: "disconnect",
                      value: function() {
                          s.debug("disconnect()"), this._ws && (this._ws.onopen = function() {}, this._ws.onclose = function() {}, this._ws.onmessage = function() {}, this._ws.onerror = function() {}, this._ws.close(), this._ws = null)
                      }
                  }, {
                      key: "send",
                      value: function(e) {
                          return s.debug("send()"), this.isConnected() ? (this._ws.send(e), !0) : (s.warn("unable to send message, WebSocket is not open"), !1)
                      }
                  }, {
                      key: "isConnected",
                      value: function() {
                          return this._ws && this._ws.readyState === this._ws.OPEN
                      }
                  }, {
                      key: "isConnecting",
                      value: function() {
                          return this._ws && this._ws.readyState === this._ws.CONNECTING
                      }
                  }, {
                      key: "_onOpen",
                      value: function() {
                          s.debug("WebSocket ".concat(this._url, " connected")), this.onconnect()
                      }
                  }, {
                      key: "_onClose",
                      value: function(e) {
                          var n = e.wasClean,
                              t = e.code,
                              l = e.reason;
                          s.debug("WebSocket ".concat(this._url, " closed")), !1 === n && s.debug("WebSocket abrupt disconnection"), this.ondisconnect(!n, t, l)
                      }
                  }, {
                      key: "_onMessage",
                      value: function(e) {
                          var n = e.data;
                          s.debug("received WebSocket message"), this.ondata(n)
                      }
                  }, {
                      key: "_onError",
                      value: function(e) {
                          s.warn("WebSocket ".concat(this._url, " error: "), e)
                      }
                  }, {
                      key: "via_transport",
                      get: function() {
                          return this._via_transport
                      },
                      set: function(e) {
                          this._via_transport = e.toUpperCase()
                      }
                  }, {
                      key: "sip_uri",
                      get: function() {
                          return this._sip_uri
                      }
                  }, {
                      key: "url",
                      get: function() {
                          return this._url
                      }
                  }]) && l(n.prototype, t), e
              }()
          },
          710: (e, n, t) => {
              "use strict";

              function l(e, n) {
                  var t;
                  if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                      if (Array.isArray(e) || (t = function(e, n) {
                              if (e) {
                                  if ("string" == typeof e) return r(e, n);
                                  var t = Object.prototype.toString.call(e).slice(8, -1);
                                  return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? r(e, n) : void 0
                              }
                          }(e)) || n && e && "number" == typeof e.length) {
                          t && (e = t);
                          var l = 0,
                              u = function() {};
                          return {
                              s: u,
                              n: function() {
                                  return l >= e.length ? {
                                      done: !0
                                  } : {
                                      done: !1,
                                      value: e[l++]
                                  }
                              },
                              e: function(e) {
                                  throw e
                              },
                              f: u
                          }
                      }
                      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                  }
                  var s, o = !0,
                      i = !1;
                  return {
                      s: function() {
                          t = e[Symbol.iterator]()
                      },
                      n: function() {
                          var e = t.next();
                          return o = e.done, e
                      },
                      e: function(e) {
                          i = !0, s = e
                      },
                      f: function() {
                          try {
                              o || null == t.return || t.return()
                          } finally {
                              if (i) throw s
                          }
                      }
                  }
              }

              function r(e, n) {
                  (null == n || n > e.length) && (n = e.length);
                  for (var t = 0, l = new Array(n); t < n; t++) l[t] = e[t];
                  return l
              }
              var u, s, o, i = t(356),
                  a = t(965),
                  c = t(497),
                  h = t(424),
                  d = new i("sanityCheck"),
                  f = [function() {
                      for (var e = 0, n = ["from", "to", "call_id", "cseq", "via"]; e < n.length; e++) {
                          var t = n[e];
                          if (!u.hasHeader(t)) return d.debug("missing mandatory header field : ".concat(t, ", dropping the response")), !1
                      }
                  }],
                  _ = [function() {
                      if ("sip" !== u.s("to").uri.scheme) return m(416), !1
                  }, function() {
                      if (!u.to_tag && u.call_id.substr(0, 5) === s.configuration.jssip_id) return m(482), !1
                  }, function() {
                      if (h.str_utf8_length(u.body) < u.getHeader("content-length")) return m(400), !1
                  }, function() {
                      var e, n = u.from_tag,
                          t = u.call_id,
                          l = u.cseq;
                      if (!u.to_tag)
                          if (u.method === a.INVITE) {
                              if (s._transactions.ist[u.via_branch]) return !1;
                              for (var r in s._transactions.ist)
                                  if (Object.prototype.hasOwnProperty.call(s._transactions.ist, r) && (e = s._transactions.ist[r]).request.from_tag === n && e.request.call_id === t && e.request.cseq === l) return m(482), !1
                          } else {
                              if (s._transactions.nist[u.via_branch]) return !1;
                              for (var o in s._transactions.nist)
                                  if (Object.prototype.hasOwnProperty.call(s._transactions.nist, o) && (e = s._transactions.nist[o]).request.from_tag === n && e.request.call_id === t && e.request.cseq === l) return m(482), !1
                          }
                  }],
                  p = [function() {
                      if (u.getHeaders("via").length > 1) return d.debug("more than one Via header field present in the response, dropping the response"), !1
                  }, function() {
                      if (h.str_utf8_length(u.body) < u.getHeader("content-length")) return d.debug("message body length is lower than the value in Content-Length header field, dropping the response"), !1
                  }];

              function m(e) {
                  var n, t, r = u.getHeaders("via"),
                      s = "SIP/2.0 ".concat(e, " ").concat(a.REASON_PHRASE[e], "\r\n"),
                      i = l(r);
                  try {
                      for (i.s(); !(t = i.n()).done;) {
                          var c = t.value;
                          s += "Via: ".concat(c, "\r\n")
                      }
                  } catch (e) {
                      i.e(e)
                  } finally {
                      i.f()
                  }
                  n = u.getHeader("To"), u.to_tag || (n += ";tag=".concat(h.newTag())), s += "To: ".concat(n, "\r\n"), s += "From: ".concat(u.getHeader("From"), "\r\n"), s += "Call-ID: ".concat(u.call_id, "\r\n"), s += "CSeq: ".concat(u.cseq, " ").concat(u.method, "\r\n"), s += "\r\n", o.send(s)
              }
              e.exports = function(e, n, t) {
                  u = e, s = n, o = t;
                  var r, i = l(f);
                  try {
                      for (i.s(); !(r = i.n()).done;)
                          if (!1 === (0, r.value)()) return !1
                  } catch (e) {
                      i.e(e)
                  } finally {
                      i.f()
                  }
                  if (u instanceof c.IncomingRequest) {
                      var a, h = l(_);
                      try {
                          for (h.s(); !(a = h.n()).done;)
                              if (!1 === (0, a.value)()) return !1
                      } catch (e) {
                          h.e(e)
                      } finally {
                          h.f()
                      }
                  } else if (u instanceof c.IncomingResponse) {
                      var d, m = l(p);
                      try {
                          for (m.s(); !(d = m.n()).done;)
                              if (!1 === (0, d.value)()) return !1
                      } catch (e) {
                          m.e(e)
                      } finally {
                          m.f()
                      }
                  }
                  return !0
              }
          },
          330: (e, n, t) => {
              const l = t(403);
              e.exports = {
                  USER_AGENT: `${l.title} ${l.version}`,
                  SIP: "sip",
                  SIPS: "sips",
                  causes: {
                      CONNECTION_ERROR: "Connection Error",
                      REQUEST_TIMEOUT: "Request Timeout",
                      SIP_FAILURE_CODE: "SIP Failure Code",
                      INTERNAL_ERROR: "Internal Error",
                      BUSY: "Busy",
                      REJECTED: "Rejected",
                      REDIRECTED: "Redirected",
                      UNAVAILABLE: "Unavailable",
                      NOT_FOUND: "Not Found",
                      ADDRESS_INCOMPLETE: "Address Incomplete",
                      INCOMPATIBLE_SDP: "Incompatible SDP",
                      MISSING_SDP: "Missing SDP",
                      AUTHENTICATION_ERROR: "Authentication Error",
                      BYE: "Terminated",
                      WEBRTC_ERROR: "WebRTC Error",
                      CANCELED: "Canceled",
                      NO_ANSWER: "No Answer",
                      EXPIRES: "Expires",
                      NO_ACK: "No ACK",
                      DIALOG_ERROR: "Dialog Error",
                      USER_DENIED_MEDIA_ACCESS: "User Denied Media Access",
                      BAD_MEDIA_DESCRIPTION: "Bad Media Description",
                      RTP_TIMEOUT: "RTP Timeout"
                  },
                  SIP_ERROR_CAUSES: {
                      REDIRECTED: [300, 301, 302, 305, 380],
                      BUSY: [486, 600],
                      REJECTED: [403, 603],
                      NOT_FOUND: [404, 604],
                      UNAVAILABLE: [480, 410, 408, 430],
                      ADDRESS_INCOMPLETE: [484, 424],
                      INCOMPATIBLE_SDP: [488, 606],
                      AUTHENTICATION_ERROR: [401, 407]
                  },
                  ACK: "ACK",
                  BYE: "BYE",
                  CANCEL: "CANCEL",
                  INFO: "INFO",
                  INVITE: "INVITE",
                  MESSAGE: "MESSAGE",
                  NOTIFY: "NOTIFY",
                  OPTIONS: "OPTIONS",
                  REGISTER: "REGISTER",
                  REFER: "REFER",
                  UPDATE: "UPDATE",
                  SUBSCRIBE: "SUBSCRIBE",
                  DTMF_TRANSPORT: {
                      INFO: "INFO",
                      RFC2833: "RFC2833"
                  },
                  REASON_PHRASE: {
                      100: "Trying",
                      180: "Ringing",
                      181: "Call Is Being Forwarded",
                      182: "Queued",
                      183: "Session Progress",
                      199: "Early Dialog Terminated",
                      200: "OK",
                      202: "Accepted",
                      204: "No Notification",
                      300: "Multiple Choices",
                      301: "Moved Permanently",
                      302: "Moved Temporarily",
                      305: "Use Proxy",
                      380: "Alternative Service",
                      400: "Bad Request",
                      401: "Unauthorized",
                      402: "Payment Required",
                      403: "Forbidden",
                      404: "Not Found",
                      405: "Method Not Allowed",
                      406: "Not Acceptable",
                      407: "Proxy Authentication Required",
                      408: "Request Timeout",
                      410: "Gone",
                      412: "Conditional Request Failed",
                      413: "Request Entity Too Large",
                      414: "Request-URI Too Long",
                      415: "Unsupported Media Type",
                      416: "Unsupported URI Scheme",
                      417: "Unknown Resource-Priority",
                      420: "Bad Extension",
                      421: "Extension Required",
                      422: "Session Interval Too Small",
                      423: "Interval Too Brief",
                      424: "Bad Location Information",
                      428: "Use Identity Header",
                      429: "Provide Referrer Identity",
                      430: "Flow Failed",
                      433: "Anonymity Disallowed",
                      436: "Bad Identity-Info",
                      437: "Unsupported Certificate",
                      438: "Invalid Identity Header",
                      439: "First Hop Lacks Outbound Support",
                      440: "Max-Breadth Exceeded",
                      469: "Bad Info Package",
                      470: "Consent Needed",
                      478: "Unresolvable Destination",
                      480: "Temporarily Unavailable",
                      481: "Call/Transaction Does Not Exist",
                      482: "Loop Detected",
                      483: "Too Many Hops",
                      484: "Address Incomplete",
                      485: "Ambiguous",
                      486: "Busy Here",
                      487: "Request Terminated",
                      488: "Not Acceptable Here",
                      489: "Bad Event",
                      491: "Request Pending",
                      493: "Undecipherable",
                      494: "Security Agreement Required",
                      500: "JsSIP Internal Error",
                      501: "Not Implemented",
                      502: "Bad Gateway",
                      503: "Service Unavailable",
                      504: "Server Time-out",
                      505: "Version Not Supported",
                      513: "Message Too Large",
                      580: "Precondition Failure",
                      600: "Busy Everywhere",
                      603: "Decline",
                      604: "Does Not Exist Anywhere",
                      606: "Not Acceptable"
                  },
                  ALLOWED_METHODS: "INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY",
                  ACCEPTED_BODY_TYPES: "application/sdp, application/dtmf-relay",
                  MAX_FORWARDS: 69,
                  SESSION_EXPIRES: 90,
                  MIN_SESSION_EXPIRES: 60,
                  CONNECTION_RECOVERY_MAX_INTERVAL: 30,
                  CONNECTION_RECOVERY_MIN_INTERVAL: 2
              }
          },
          824: (e, n, t) => {
              e.exports = function() {
                  function e(e) {
                      return '"' + e.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g, escape) + '"'
                  }
                  var n = {
                      parse: function(n, l) {
                          var r = {
                              CRLF: a,
                              DIGIT: c,
                              ALPHA: h,
                              HEXDIG: d,
                              WSP: f,
                              OCTET: _,
                              DQUOTE: p,
                              SP: m,
                              HTAB: v,
                              alphanum: g,
                              reserved: y,
                              unreserved: C,
                              mark: T,
                              escaped: A,
                              LWS: b,
                              SWS: E,
                              HCOLON: S,
                              TEXT_UTF8_TRIM: R,
                              TEXT_UTF8char: w,
                              UTF8_NONASCII: I,
                              UTF8_CONT: O,
                              LHEX: function() {
                                  var e;
                                  return null === (e = c()) && (/^[a-f]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[a-f]"))), e
                              },
                              token: N,
                              token_nodot: k,
                              separators: function() {
                                  var e;
                                  return 40 === n.charCodeAt(u) ? (e = "(", u++) : (e = null, i('"("')), null === e && (41 === n.charCodeAt(u) ? (e = ")", u++) : (e = null, i('")"')), null === e && (60 === n.charCodeAt(u) ? (e = "<", u++) : (e = null, i('"<"')), null === e && (62 === n.charCodeAt(u) ? (e = ">", u++) : (e = null, i('">"')), null === e && (64 === n.charCodeAt(u) ? (e = "@", u++) : (e = null, i('"@"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","')), null === e && (59 === n.charCodeAt(u) ? (e = ";", u++) : (e = null, i('";"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (92 === n.charCodeAt(u) ? (e = "\\", u++) : (e = null, i('"\\\\"')), null === e && null === (e = p()) && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null === e && (91 === n.charCodeAt(u) ? (e = "[", u++) : (e = null, i('"["')), null === e && (93 === n.charCodeAt(u) ? (e = "]", u++) : (e = null, i('"]"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (123 === n.charCodeAt(u) ? (e = "{", u++) : (e = null, i('"{"')), null === e && (125 === n.charCodeAt(u) ? (e = "}", u++) : (e = null, i('"}"')), null === e && null === (e = m()) && (e = v())))))))))))))))), e
                              },
                              word: x,
                              STAR: D,
                              SLASH: P,
                              EQUAL: U,
                              LPAREN: L,
                              RPAREN: q,
                              RAQUOT: M,
                              LAQUOT: F,
                              COMMA: H,
                              SEMI: j,
                              COLON: G,
                              LDQUOT: B,
                              RDQUOT: V,
                              comment: function e() {
                                  var n, t, l, r;
                                  if (r = u, null !== (n = L())) {
                                      for (t = [], null === (l = W()) && null === (l = z()) && (l = e()); null !== l;) t.push(l), null === (l = W()) && null === (l = z()) && (l = e());
                                      null !== t && null !== (l = q()) ? n = [n, t, l] : (n = null, u = r)
                                  } else n = null, u = r;
                                  return n
                              },
                              ctext: W,
                              quoted_string: $,
                              quoted_string_clean: Y,
                              qdtext: K,
                              quoted_pair: z,
                              SIP_URI_noparams: J,
                              SIP_URI: X,
                              uri_scheme: Q,
                              uri_scheme_sips: Z,
                              uri_scheme_sip: ee,
                              userinfo: ne,
                              user: te,
                              user_unreserved: le,
                              password: re,
                              hostport: ue,
                              host: se,
                              hostname: oe,
                              domainlabel: ie,
                              toplabel: ae,
                              IPv6reference: ce,
                              IPv6address: he,
                              h16: de,
                              ls32: fe,
                              IPv4address: _e,
                              dec_octet: pe,
                              port: me,
                              uri_parameters: ve,
                              uri_parameter: ge,
                              transport_param: ye,
                              user_param: Ce,
                              method_param: Te,
                              ttl_param: Ae,
                              maddr_param: be,
                              lr_param: Ee,
                              other_param: Se,
                              pname: Re,
                              pvalue: we,
                              paramchar: Ie,
                              param_unreserved: Oe,
                              headers: Ne,
                              header: ke,
                              hname: xe,
                              hvalue: De,
                              hnv_unreserved: Pe,
                              Request_Response: function() {
                                  var e;
                                  return null === (e = hn()) && (e = Ue()), e
                              },
                              Request_Line: Ue,
                              Request_URI: Le,
                              absoluteURI: qe,
                              hier_part: Me,
                              net_path: Fe,
                              abs_path: He,
                              opaque_part: je,
                              uric: Ge,
                              uric_no_slash: Be,
                              path_segments: Ve,
                              segment: We,
                              param: $e,
                              pchar: Ye,
                              scheme: Ke,
                              authority: ze,
                              srvr: Je,
                              reg_name: Xe,
                              query: Qe,
                              SIP_Version: Ze,
                              INVITEm: en,
                              ACKm: nn,
                              OPTIONSm: tn,
                              BYEm: ln,
                              CANCELm: rn,
                              REGISTERm: un,
                              SUBSCRIBEm: sn,
                              NOTIFYm: on,
                              REFERm: an,
                              Method: cn,
                              Status_Line: hn,
                              Status_Code: dn,
                              extension_code: fn,
                              Reason_Phrase: _n,
                              Allow_Events: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = Mn())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = Mn()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = Mn()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              Call_ID: function() {
                                  var e, t, l, r, s, o;
                                  return r = u, s = u, null !== (e = x()) ? (o = u, 64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null !== t && null !== (l = x()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                      Ht = n.substring(u, e)
                                  }(r)), null === e && (u = r), e
                              },
                              Contact: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, null === (e = D()))
                                      if (s = u, null !== (e = pn())) {
                                          for (n = [], o = u, null !== (t = H()) && null !== (l = pn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = H()) && null !== (l = pn()) ? t = [t, l] : (t = null, u = o);
                                          null !== n ? e = [e, n] : (e = null, u = s)
                                      } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      var n, t;
                                      for (t = Ht.multi_header.length, n = 0; n < t; n++)
                                          if (null === Ht.multi_header[n].parsed) {
                                              Ht = null;
                                              break
                                          } Ht = null !== Ht ? Ht.multi_header : -1
                                  }()), null === e && (u = r), e
                              },
                              contact_param: pn,
                              name_addr: mn,
                              display_name: vn,
                              contact_params: gn,
                              c_p_q: yn,
                              c_p_expires: Cn,
                              delta_seconds: Tn,
                              qvalue: An,
                              generic_param: bn,
                              gen_value: En,
                              Content_Disposition: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = Sn())) {
                                      for (n = [], s = u, null !== (t = j()) && null !== (l = Rn()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = Rn()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              disp_type: Sn,
                              disp_param: Rn,
                              handling_param: wn,
                              Content_Encoding: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = N())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              Content_Length: function() {
                                  var e, n, t;
                                  if (t = u, null !== (n = c()))
                                      for (e = []; null !== n;) e.push(n), n = c();
                                  else e = null;
                                  return null !== e && (e = void(Ht = parseInt(e.join("")))), null === e && (u = t), e
                              },
                              Content_Type: function() {
                                  var e, t;
                                  return t = u, null !== (e = In()) && (e = function(e) {
                                      Ht = n.substring(u, e)
                                  }(t)), null === e && (u = t), e
                              },
                              media_type: In,
                              m_type: On,
                              discrete_type: Nn,
                              composite_type: kn,
                              extension_token: xn,
                              x_token: Dn,
                              m_subtype: Pn,
                              m_parameter: Un,
                              m_value: Ln,
                              CSeq: function() {
                                  var e, n, t, l;
                                  return l = u, null !== (e = qn()) && null !== (n = b()) && null !== (t = cn()) ? e = [e, n, t] : (e = null, u = l), e
                              },
                              CSeq_value: qn,
                              Expires: function() {
                                  var e, n;
                                  return n = u, null !== (e = Tn()) && (e = void(Ht = e)), null === e && (u = n), e
                              },
                              Event: function() {
                                  var e, n, t, l, r, s, o, i;
                                  if (r = u, s = u, null !== (e = Mn())) {
                                      for (n = [], o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (i = e[0], e = void(Ht.event = i.join("").toLowerCase())), null === e && (u = r), e
                              },
                              event_type: Mn,
                              From: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, s = u, null === (e = J()) && (e = mn()), null !== e) {
                                      for (n = [], o = u, null !== (t = j()) && null !== (l = Fn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = Fn()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      var n = Ht.tag;
                                      try {
                                          Ht = new Ft(Ht.uri, Ht.display_name, Ht.params), n && Ht.setParam("tag", n)
                                      } catch (e) {
                                          Ht = -1
                                      }
                                  }()), null === e && (u = r), e
                              },
                              from_param: Fn,
                              tag_param: Hn,
                              Max_Forwards: function() {
                                  var e, n, t;
                                  if (t = u, null !== (n = c()))
                                      for (e = []; null !== n;) e.push(n), n = c();
                                  else e = null;
                                  return null !== e && (e = void(Ht = parseInt(e.join("")))), null === e && (u = t), e
                              },
                              Min_Expires: function() {
                                  var e, n;
                                  return n = u, null !== (e = Tn()) && (e = void(Ht = e)), null === e && (u = n), e
                              },
                              Name_Addr_Header: function() {
                                  var e, n, t, l, r, s, o, i, a, c;
                                  for (i = u, a = u, e = [], n = vn(); null !== n;) e.push(n), n = vn();
                                  if (null !== e)
                                      if (null !== (n = F()))
                                          if (null !== (t = X()))
                                              if (null !== (l = M())) {
                                                  for (r = [], c = u, null !== (s = j()) && null !== (o = bn()) ? s = [s, o] : (s = null, u = c); null !== s;) r.push(s), c = u, null !== (s = j()) && null !== (o = bn()) ? s = [s, o] : (s = null, u = c);
                                                  null !== r ? e = [e, n, t, l, r] : (e = null, u = a)
                                              } else e = null, u = a;
                                  else e = null, u = a;
                                  else e = null, u = a;
                                  else e = null, u = a;
                                  return null !== e && (e = function(e) {
                                      try {
                                          Ht = new Ft(Ht.uri, Ht.display_name, Ht.params)
                                      } catch (e) {
                                          Ht = -1
                                      }
                                  }()), null === e && (u = i), e
                              },
                              Proxy_Authenticate: function() {
                                  return jn()
                              },
                              challenge: jn,
                              other_challenge: Gn,
                              auth_param: Bn,
                              digest_cln: Vn,
                              realm: Wn,
                              realm_value: $n,
                              domain: Yn,
                              URI: Kn,
                              nonce: zn,
                              nonce_value: Jn,
                              opaque: Xn,
                              stale: Qn,
                              algorithm: Zn,
                              qop_options: et,
                              qop_value: nt,
                              Proxy_Require: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = N())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              Record_Route: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, s = u, null !== (e = tt())) {
                                      for (n = [], o = u, null !== (t = H()) && null !== (l = tt()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = H()) && null !== (l = tt()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      var n, t;
                                      for (t = Ht.multi_header.length, n = 0; n < t; n++)
                                          if (null === Ht.multi_header[n].parsed) {
                                              Ht = null;
                                              break
                                          } Ht = null !== Ht ? Ht.multi_header : -1
                                  }()), null === e && (u = r), e
                              },
                              rec_route: tt,
                              Reason: function() {
                                  var e, t, l, r, s, o, a;
                                  if (s = u, o = u, "sip" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"SIP"')), null === e && (e = N()), null !== e) {
                                      for (t = [], a = u, null !== (l = j()) && null !== (r = lt()) ? l = [l, r] : (l = null, u = a); null !== l;) t.push(l), a = u, null !== (l = j()) && null !== (r = lt()) ? l = [l, r] : (l = null, u = a);
                                      null !== t ? e = [e, t] : (e = null, u = o)
                                  } else e = null, u = o;
                                  return null !== e && (e = function(e, n) {
                                      if (Ht.protocol = n.toLowerCase(), Ht.params || (Ht.params = {}), Ht.params.text && '"' === Ht.params.text[0]) {
                                          var t = Ht.params.text;
                                          Ht.text = t.substring(1, t.length - 1), delete Ht.params.text
                                      }
                                  }(0, e[0])), null === e && (u = s), e
                              },
                              reason_param: lt,
                              reason_cause: rt,
                              Require: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = N())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              Route: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = ut())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = ut()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = ut()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              route_param: ut,
                              Subscription_State: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = st())) {
                                      for (n = [], s = u, null !== (t = j()) && null !== (l = ot()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = ot()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              substate_value: st,
                              subexp_params: ot,
                              event_reason_value: it,
                              Subject: function() {
                                  var e;
                                  return null !== (e = R()) ? e : ""
                              },
                              Supported: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = N())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = N()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return null !== e ? e : ""
                              },
                              To: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, s = u, null === (e = J()) && (e = mn()), null !== e) {
                                      for (n = [], o = u, null !== (t = j()) && null !== (l = at()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = at()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      var n = Ht.tag;
                                      try {
                                          Ht = new Ft(Ht.uri, Ht.display_name, Ht.params), n && Ht.setParam("tag", n)
                                      } catch (e) {
                                          Ht = -1
                                      }
                                  }()), null === e && (u = r), e
                              },
                              to_param: at,
                              Via: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = ct())) {
                                      for (n = [], s = u, null !== (t = H()) && null !== (l = ct()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = H()) && null !== (l = ct()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              via_param: ct,
                              via_params: ht,
                              via_ttl: dt,
                              via_maddr: ft,
                              via_received: _t,
                              via_branch: pt,
                              response_port: mt,
                              rport: vt,
                              sent_protocol: gt,
                              protocol_name: yt,
                              transport: Ct,
                              sent_by: Tt,
                              via_host: At,
                              via_port: bt,
                              ttl: Et,
                              WWW_Authenticate: function() {
                                  return jn()
                              },
                              Session_Expires: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = St())) {
                                      for (n = [], s = u, null !== (t = j()) && null !== (l = Rt()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = Rt()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              s_e_expires: St,
                              s_e_params: Rt,
                              s_e_refresher: wt,
                              extension_header: function() {
                                  var e, n, t, l;
                                  return l = u, null !== (e = N()) && null !== (n = S()) && null !== (t = It()) ? e = [e, n, t] : (e = null, u = l), e
                              },
                              header_value: It,
                              message_body: function() {
                                  var e, n;
                                  for (e = [], n = _(); null !== n;) e.push(n), n = _();
                                  return e
                              },
                              uuid_URI: function() {
                                  var e, t, l;
                                  return l = u, "uuid:" === n.substr(u, 5) ? (e = "uuid:", u += 5) : (e = null, i('"uuid:"')), null !== e && null !== (t = Ot()) ? e = [e, t] : (e = null, u = l), e
                              },
                              uuid: Ot,
                              hex4: Nt,
                              hex8: kt,
                              hex12: xt,
                              Refer_To: function() {
                                  var e, n, t, l, r, s, o;
                                  if (r = u, s = u, null === (e = J()) && (e = mn()), null !== e) {
                                      for (n = [], o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o);
                                      null !== n ? e = [e, n] : (e = null, u = s)
                                  } else e = null, u = s;
                                  return null !== e && (e = function(e) {
                                      try {
                                          Ht = new Ft(Ht.uri, Ht.display_name, Ht.params)
                                      } catch (e) {
                                          Ht = -1
                                      }
                                  }()), null === e && (u = r), e
                              },
                              Replaces: function() {
                                  var e, n, t, l, r, s;
                                  if (r = u, null !== (e = Dt())) {
                                      for (n = [], s = u, null !== (t = j()) && null !== (l = Pt()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = Pt()) ? t = [t, l] : (t = null, u = s);
                                      null !== n ? e = [e, n] : (e = null, u = r)
                                  } else e = null, u = r;
                                  return e
                              },
                              call_id: Dt,
                              replaces_param: Pt,
                              to_tag: Ut,
                              from_tag: Lt,
                              early_flag: qt
                          };
                          if (void 0 !== l) {
                              if (void 0 === r[l]) throw new Error("Invalid rule name: " + e(l) + ".")
                          } else l = "CRLF";
                          var u = 0,
                              s = 0,
                              o = [];

                          function i(e) {
                              u < s || (u > s && (s = u, o = []), o.push(e))
                          }

                          function a() {
                              var e;
                              return "\r\n" === n.substr(u, 2) ? (e = "\r\n", u += 2) : (e = null, i('"\\r\\n"')), e
                          }

                          function c() {
                              var e;
                              return /^[0-9]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[0-9]")), e
                          }

                          function h() {
                              var e;
                              return /^[a-zA-Z]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[a-zA-Z]")), e
                          }

                          function d() {
                              var e;
                              return /^[0-9a-fA-F]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[0-9a-fA-F]")), e
                          }

                          function f() {
                              var e;
                              return null === (e = m()) && (e = v()), e
                          }

                          function _() {
                              var e;
                              return /^[\0-\xFF]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\0-\\xFF]")), e
                          }

                          function p() {
                              var e;
                              return /^["]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i('["]')), e
                          }

                          function m() {
                              var e;
                              return 32 === n.charCodeAt(u) ? (e = " ", u++) : (e = null, i('" "')), e
                          }

                          function v() {
                              var e;
                              return 9 === n.charCodeAt(u) ? (e = "\t", u++) : (e = null, i('"\\t"')), e
                          }

                          function g() {
                              var e;
                              return /^[a-zA-Z0-9]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[a-zA-Z0-9]")), e
                          }

                          function y() {
                              var e;
                              return 59 === n.charCodeAt(u) ? (e = ";", u++) : (e = null, i('";"')), null === e && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (64 === n.charCodeAt(u) ? (e = "@", u++) : (e = null, i('"@"')), null === e && (38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","'))))))))))), e
                          }

                          function C() {
                              var e;
                              return null === (e = g()) && (e = T()), e
                          }

                          function T() {
                              var e;
                              return 45 === n.charCodeAt(u) ? (e = "-", u++) : (e = null, i('"-"')), null === e && (95 === n.charCodeAt(u) ? (e = "_", u++) : (e = null, i('"_"')), null === e && (46 === n.charCodeAt(u) ? (e = ".", u++) : (e = null, i('"."')), null === e && (33 === n.charCodeAt(u) ? (e = "!", u++) : (e = null, i('"!"')), null === e && (126 === n.charCodeAt(u) ? (e = "~", u++) : (e = null, i('"~"')), null === e && (42 === n.charCodeAt(u) ? (e = "*", u++) : (e = null, i('"*"')), null === e && (39 === n.charCodeAt(u) ? (e = "'", u++) : (e = null, i('"\'"')), null === e && (40 === n.charCodeAt(u) ? (e = "(", u++) : (e = null, i('"("')), null === e && (41 === n.charCodeAt(u) ? (e = ")", u++) : (e = null, i('")"')))))))))), e
                          }

                          function A() {
                              var e, t, l, r, s;
                              return r = u, s = u, 37 === n.charCodeAt(u) ? (e = "%", u++) : (e = null, i('"%"')), null !== e && null !== (t = d()) && null !== (l = d()) ? e = [e, t, l] : (e = null, u = s), null !== e && (e = e.join("")), null === e && (u = r), e
                          }

                          function b() {
                              var e, n, t, l, r, s;
                              for (l = u, r = u, s = u, e = [], n = f(); null !== n;) e.push(n), n = f();
                              if (null !== e && null !== (n = a()) ? e = [e, n] : (e = null, u = s), null !== (e = null !== e ? e : "")) {
                                  if (null !== (t = f()))
                                      for (n = []; null !== t;) n.push(t), t = f();
                                  else n = null;
                                  null !== n ? e = [e, n] : (e = null, u = r)
                              } else e = null, u = r;
                              return null !== e && (e = " "), null === e && (u = l), e
                          }

                          function E() {
                              var e;
                              return null !== (e = b()) ? e : ""
                          }

                          function S() {
                              var e, t, l, r, s;
                              for (r = u, s = u, e = [], null === (t = m()) && (t = v()); null !== t;) e.push(t), null === (t = m()) && (t = v());
                              return null !== e ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ":"), null === e && (u = r), e
                          }

                          function R() {
                              var e, t, l, r, s, o, i;
                              if (s = u, o = u, null !== (t = w()))
                                  for (e = []; null !== t;) e.push(t), t = w();
                              else e = null;
                              if (null !== e) {
                                  for (t = [], i = u, l = [], r = b(); null !== r;) l.push(r), r = b();
                                  for (null !== l && null !== (r = w()) ? l = [l, r] : (l = null, u = i); null !== l;) {
                                      for (t.push(l), i = u, l = [], r = b(); null !== r;) l.push(r), r = b();
                                      null !== l && null !== (r = w()) ? l = [l, r] : (l = null, u = i)
                                  }
                                  null !== t ? e = [e, t] : (e = null, u = o)
                              } else e = null, u = o;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(s)), null === e && (u = s), e
                          }

                          function w() {
                              var e;
                              return /^[!-~]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[!-~]")), null === e && (e = I()), e
                          }

                          function I() {
                              var e;
                              return /^[\x80-\uFFFF]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\x80-\\uFFFF]")), e
                          }

                          function O() {
                              var e;
                              return /^[\x80-\xBF]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\x80-\\xBF]")), e
                          }

                          function N() {
                              var e, t, l;
                              if (l = u, null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"')))))))))))), null !== t)
                                  for (e = []; null !== t;) e.push(t), null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"'))))))))))));
                              else e = null;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function k() {
                              var e, t, l;
                              if (l = u, null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"'))))))))))), null !== t)
                                  for (e = []; null !== t;) e.push(t), null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"')))))))))));
                              else e = null;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function x() {
                              var e, t, l;
                              if (l = u, null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"')), null === t && (40 === n.charCodeAt(u) ? (t = "(", u++) : (t = null, i('"("')), null === t && (41 === n.charCodeAt(u) ? (t = ")", u++) : (t = null, i('")"')), null === t && (60 === n.charCodeAt(u) ? (t = "<", u++) : (t = null, i('"<"')), null === t && (62 === n.charCodeAt(u) ? (t = ">", u++) : (t = null, i('">"')), null === t && (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null === t && (92 === n.charCodeAt(u) ? (t = "\\", u++) : (t = null, i('"\\\\"')), null === t && null === (t = p()) && (47 === n.charCodeAt(u) ? (t = "/", u++) : (t = null, i('"/"')), null === t && (91 === n.charCodeAt(u) ? (t = "[", u++) : (t = null, i('"["')), null === t && (93 === n.charCodeAt(u) ? (t = "]", u++) : (t = null, i('"]"')), null === t && (63 === n.charCodeAt(u) ? (t = "?", u++) : (t = null, i('"?"')), null === t && (123 === n.charCodeAt(u) ? (t = "{", u++) : (t = null, i('"{"')), null === t && (125 === n.charCodeAt(u) ? (t = "}", u++) : (t = null, i('"}"')))))))))))))))))))))))), null !== t)
                                  for (e = []; null !== t;) e.push(t), null === (t = g()) && (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null === t && (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null === t && (33 === n.charCodeAt(u) ? (t = "!", u++) : (t = null, i('"!"')), null === t && (37 === n.charCodeAt(u) ? (t = "%", u++) : (t = null, i('"%"')), null === t && (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null === t && (95 === n.charCodeAt(u) ? (t = "_", u++) : (t = null, i('"_"')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (96 === n.charCodeAt(u) ? (t = "`", u++) : (t = null, i('"`"')), null === t && (39 === n.charCodeAt(u) ? (t = "'", u++) : (t = null, i('"\'"')), null === t && (126 === n.charCodeAt(u) ? (t = "~", u++) : (t = null, i('"~"')), null === t && (40 === n.charCodeAt(u) ? (t = "(", u++) : (t = null, i('"("')), null === t && (41 === n.charCodeAt(u) ? (t = ")", u++) : (t = null, i('")"')), null === t && (60 === n.charCodeAt(u) ? (t = "<", u++) : (t = null, i('"<"')), null === t && (62 === n.charCodeAt(u) ? (t = ">", u++) : (t = null, i('">"')), null === t && (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null === t && (92 === n.charCodeAt(u) ? (t = "\\", u++) : (t = null, i('"\\\\"')), null === t && null === (t = p()) && (47 === n.charCodeAt(u) ? (t = "/", u++) : (t = null, i('"/"')), null === t && (91 === n.charCodeAt(u) ? (t = "[", u++) : (t = null, i('"["')), null === t && (93 === n.charCodeAt(u) ? (t = "]", u++) : (t = null, i('"]"')), null === t && (63 === n.charCodeAt(u) ? (t = "?", u++) : (t = null, i('"?"')), null === t && (123 === n.charCodeAt(u) ? (t = "{", u++) : (t = null, i('"{"')), null === t && (125 === n.charCodeAt(u) ? (t = "}", u++) : (t = null, i('"}"'))))))))))))))))))))))));
                              else e = null;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function D() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (42 === n.charCodeAt(u) ? (t = "*", u++) : (t = null, i('"*"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = "*"), null === e && (u = r), e
                          }

                          function P() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (47 === n.charCodeAt(u) ? (t = "/", u++) : (t = null, i('"/"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = "/"), null === e && (u = r), e
                          }

                          function U() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = "="), null === e && (u = r), e
                          }

                          function L() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (40 === n.charCodeAt(u) ? (t = "(", u++) : (t = null, i('"("')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = "("), null === e && (u = r), e
                          }

                          function q() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (41 === n.charCodeAt(u) ? (t = ")", u++) : (t = null, i('")"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ")"), null === e && (u = r), e
                          }

                          function M() {
                              var e, t, l, r;
                              return l = u, r = u, 62 === n.charCodeAt(u) ? (e = ">", u++) : (e = null, i('">"')), null !== e && null !== (t = E()) ? e = [e, t] : (e = null, u = r), null !== e && (e = ">"), null === e && (u = l), e
                          }

                          function F() {
                              var e, t, l, r;
                              return l = u, r = u, null !== (e = E()) ? (60 === n.charCodeAt(u) ? (t = "<", u++) : (t = null, i('"<"')), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null !== e && (e = "<"), null === e && (u = l), e
                          }

                          function H() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ","), null === e && (u = r), e
                          }

                          function j() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ";"), null === e && (u = r), e
                          }

                          function G() {
                              var e, t, l, r, s;
                              return r = u, s = u, null !== (e = E()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = E()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = ":"), null === e && (u = r), e
                          }

                          function B() {
                              var e, n, t, l;
                              return t = u, l = u, null !== (e = E()) && null !== (n = p()) ? e = [e, n] : (e = null, u = l), null !== e && (e = '"'), null === e && (u = t), e
                          }

                          function V() {
                              var e, n, t, l;
                              return t = u, l = u, null !== (e = p()) && null !== (n = E()) ? e = [e, n] : (e = null, u = l), null !== e && (e = '"'), null === e && (u = t), e
                          }

                          function W() {
                              var e;
                              return /^[!-']/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[!-']")), null === e && (/^[*-[]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[*-[]")), null === e && (/^[\]-~]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\]-~]")), null === e && null === (e = I()) && (e = b()))), e
                          }

                          function $() {
                              var e, t, l, r, s, o;
                              if (s = u, o = u, null !== (e = E()))
                                  if (null !== (t = p())) {
                                      for (l = [], null === (r = K()) && (r = z()); null !== r;) l.push(r), null === (r = K()) && (r = z());
                                      null !== l && null !== (r = p()) ? e = [e, t, l, r] : (e = null, u = o)
                                  } else e = null, u = o;
                              else e = null, u = o;
                              return null !== e && (e = function(e) {
                                  return n.substring(u, e)
                              }(s)), null === e && (u = s), e
                          }

                          function Y() {
                              var e, t, l, r, s, o;
                              if (s = u, o = u, null !== (e = E()))
                                  if (null !== (t = p())) {
                                      for (l = [], null === (r = K()) && (r = z()); null !== r;) l.push(r), null === (r = K()) && (r = z());
                                      null !== l && null !== (r = p()) ? e = [e, t, l, r] : (e = null, u = o)
                                  } else e = null, u = o;
                              else e = null, u = o;
                              return null !== e && (e = function(e) {
                                  var t = n.substring(u, e).trim();
                                  return t.substring(1, t.length - 1).replace(/\\([\x00-\x09\x0b-\x0c\x0e-\x7f])/g, "$1")
                              }(s)), null === e && (u = s), e
                          }

                          function K() {
                              var e;
                              return null === (e = b()) && (33 === n.charCodeAt(u) ? (e = "!", u++) : (e = null, i('"!"')), null === e && (/^[#-[]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[#-[]")), null === e && (/^[\]-~]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[\\]-~]")), null === e && (e = I())))), e
                          }

                          function z() {
                              var e, t, l;
                              return l = u, 92 === n.charCodeAt(u) ? (e = "\\", u++) : (e = null, i('"\\\\"')), null !== e ? (/^[\0-\t]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[\\0-\\t]")), null === t && (/^[\x0B-\f]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[\\x0B-\\f]")), null === t && (/^[\x0E-]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[\\x0E-]")))), null !== t ? e = [e, t] : (e = null, u = l)) : (e = null, u = l), e
                          }

                          function J() {
                              var e, t, l, r, s, o;
                              return s = u, o = u, null !== (e = Q()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = null !== (l = ne()) ? l : "") && null !== (r = ue()) ? e = [e, t, l, r] : (e = null, u = o)) : (e = null, u = o), null !== e && (e = function(e) {
                                  try {
                                      Ht.uri = new Mt(Ht.scheme, Ht.user, Ht.host, Ht.port), delete Ht.scheme, delete Ht.user, delete Ht.host, delete Ht.host_type, delete Ht.port
                                  } catch (e) {
                                      Ht = -1
                                  }
                              }()), null === e && (u = s), e
                          }

                          function X() {
                              var e, t, r, s, o, a, c, h;
                              return c = u, h = u, null !== (e = Q()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (r = null !== (r = ne()) ? r : "") && null !== (s = ue()) && null !== (o = ve()) && null !== (a = null !== (a = Ne()) ? a : "") ? e = [e, t, r, s, o, a] : (e = null, u = h)) : (e = null, u = h), null !== e && (e = function(e) {
                                  try {
                                      Ht.uri = new Mt(Ht.scheme, Ht.user, Ht.host, Ht.port, Ht.uri_params, Ht.uri_headers), delete Ht.scheme, delete Ht.user, delete Ht.host, delete Ht.host_type, delete Ht.port, delete Ht.uri_params, "SIP_URI" === l && (Ht = Ht.uri)
                                  } catch (e) {
                                      Ht = -1
                                  }
                              }()), null === e && (u = c), e
                          }

                          function Q() {
                              var e;
                              return null === (e = Z()) && (e = ee()), e
                          }

                          function Z() {
                              var e, t, l;
                              return t = u, "sips" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"sips"')), null !== e && (l = e, e = void(Ht.scheme = l.toLowerCase())), null === e && (u = t), e
                          }

                          function ee() {
                              var e, t, l;
                              return t = u, "sip" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"sip"')), null !== e && (l = e, e = void(Ht.scheme = l.toLowerCase())), null === e && (u = t), e
                          }

                          function ne() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, null !== (e = te()) ? (o = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = re()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? (64 === n.charCodeAt(u) ? (l = "@", u++) : (l = null, i('"@"')), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                  Ht.user = decodeURIComponent(n.substring(u - 1, e))
                              }(r)), null === e && (u = r), e
                          }

                          function te() {
                              var e, n;
                              if (null === (n = C()) && null === (n = A()) && (n = le()), null !== n)
                                  for (e = []; null !== n;) e.push(n), null === (n = C()) && null === (n = A()) && (n = le());
                              else e = null;
                              return e
                          }

                          function le() {
                              var e;
                              return 38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","')), null === e && (59 === n.charCodeAt(u) ? (e = ";", u++) : (e = null, i('";"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"'))))))))), e
                          }

                          function re() {
                              var e, t, l;
                              for (l = u, e = [], null === (t = C()) && null === (t = A()) && (38 === n.charCodeAt(u) ? (t = "&", u++) : (t = null, i('"&"')), null === t && (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (36 === n.charCodeAt(u) ? (t = "$", u++) : (t = null, i('"$"')), null === t && (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","'))))))); null !== t;) e.push(t), null === (t = C()) && null === (t = A()) && (38 === n.charCodeAt(u) ? (t = "&", u++) : (t = null, i('"&"')), null === t && (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')), null === t && (36 === n.charCodeAt(u) ? (t = "$", u++) : (t = null, i('"$"')), null === t && (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","')))))));
                              return null !== e && (e = function(e) {
                                  Ht.password = n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function ue() {
                              var e, t, l, r, s;
                              return r = u, null !== (e = se()) ? (s = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = me()) ? t = [t, l] : (t = null, u = s), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function se() {
                              var e, t;
                              return t = u, null === (e = oe()) && null === (e = _e()) && (e = ce()), null !== e && (e = function(e) {
                                  return Ht.host = n.substring(u, e).toLowerCase(), Ht.host
                              }(t)), null === e && (u = t), e
                          }

                          function oe() {
                              var e, t, l, r, s, o;
                              for (r = u, s = u, e = [], o = u, null !== (t = ie()) ? (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== l ? t = [t, l] : (t = null, u = o)) : (t = null, u = o); null !== t;) e.push(t), o = u, null !== (t = ie()) ? (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== l ? t = [t, l] : (t = null, u = o)) : (t = null, u = o);
                              return null !== e && null !== (t = ae()) ? (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== (l = null !== l ? l : "") ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                  return Ht.host_type = "domain", n.substring(u, e)
                              }(r)), null === e && (u = r), e
                          }

                          function ie() {
                              var e, t, l, r;
                              if (r = u, null !== (e = g())) {
                                  for (t = [], null === (l = g()) && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (95 === n.charCodeAt(u) ? (l = "_", u++) : (l = null, i('"_"')))); null !== l;) t.push(l), null === (l = g()) && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (95 === n.charCodeAt(u) ? (l = "_", u++) : (l = null, i('"_"'))));
                                  null !== t ? e = [e, t] : (e = null, u = r)
                              } else e = null, u = r;
                              return e
                          }

                          function ae() {
                              var e, t, l, r;
                              if (r = u, null !== (e = h())) {
                                  for (t = [], null === (l = g()) && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (95 === n.charCodeAt(u) ? (l = "_", u++) : (l = null, i('"_"')))); null !== l;) t.push(l), null === (l = g()) && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (95 === n.charCodeAt(u) ? (l = "_", u++) : (l = null, i('"_"'))));
                                  null !== t ? e = [e, t] : (e = null, u = r)
                              } else e = null, u = r;
                              return e
                          }

                          function ce() {
                              var e, t, l, r, s;
                              return r = u, s = u, 91 === n.charCodeAt(u) ? (e = "[", u++) : (e = null, i('"["')), null !== e && null !== (t = he()) ? (93 === n.charCodeAt(u) ? (l = "]", u++) : (l = null, i('"]"')), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                  return Ht.host_type = "IPv6", n.substring(u, e)
                              }(r)), null === e && (u = r), e
                          }

                          function he() {
                              var e, t, l, r, s, o, a, c, h, d, f, _, p, m, v, g;
                              return m = u, v = u, null !== (e = de()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? (58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? (58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? (58 === n.charCodeAt(u) ? (c = ":", u++) : (c = null, i('":"')), null !== c && null !== (h = de()) ? (58 === n.charCodeAt(u) ? (d = ":", u++) : (d = null, i('":"')), null !== d && null !== (f = de()) ? (58 === n.charCodeAt(u) ? (_ = ":", u++) : (_ = null, i('":"')), null !== _ && null !== (p = fe()) ? e = [e, t, l, r, s, o, a, c, h, d, f, _, p] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = de()) ? (58 === n.charCodeAt(u) ? (h = ":", u++) : (h = null, i('":"')), null !== h && null !== (d = de()) ? (58 === n.charCodeAt(u) ? (f = ":", u++) : (f = null, i('":"')), null !== f && null !== (_ = fe()) ? e = [e, t, l, r, s, o, a, c, h, d, f, _] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = de()) ? (58 === n.charCodeAt(u) ? (h = ":", u++) : (h = null, i('":"')), null !== h && null !== (d = fe()) ? e = [e, t, l, r, s, o, a, c, h, d] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = fe()) ? e = [e, t, l, r, s, o, a, c] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = fe()) ? e = [e, t, l, r, s, o] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? (58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = fe()) ? e = [e, t, l, r] : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = fe()) ? e = [e, t] : (e = null, u = v), null === e && (v = u, "::" === n.substr(u, 2) ? (e = "::", u += 2) : (e = null, i('"::"')), null !== e && null !== (t = de()) ? e = [e, t] : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? ("::" === n.substr(u, 2) ? (t = "::", u += 2) : (t = null, i('"::"')), null !== t && null !== (l = de()) ? (58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? (58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? (58 === n.charCodeAt(u) ? (c = ":", u++) : (c = null, i('":"')), null !== c && null !== (h = de()) ? (58 === n.charCodeAt(u) ? (d = ":", u++) : (d = null, i('":"')), null !== d && null !== (f = fe()) ? e = [e, t, l, r, s, o, a, c, h, d, f] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? ("::" === n.substr(u, 2) ? (l = "::", u += 2) : (l = null, i('"::"')), null !== l && null !== (r = de()) ? (58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = de()) ? (58 === n.charCodeAt(u) ? (h = ":", u++) : (h = null, i('":"')), null !== h && null !== (d = fe()) ? e = [e, t, l, r, s, o, a, c, h, d] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? ("::" === n.substr(u, 2) ? (r = "::", u += 2) : (r = null, i('"::"')), null !== r && null !== (s = de()) ? (58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? (58 === n.charCodeAt(u) ? (c = ":", u++) : (c = null, i('":"')), null !== c && null !== (h = fe()) ? e = [e, t, l, r, s, o, a, c, h] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? (g = u, 58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? r = [r, s] : (r = null, u = g), null !== (r = null !== r ? r : "") ? ("::" === n.substr(u, 2) ? (s = "::", u += 2) : (s = null, i('"::"')), null !== s && null !== (o = de()) ? (58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = fe()) ? e = [e, t, l, r, s, o, a, c] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? (g = u, 58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? r = [r, s] : (r = null, u = g), null !== (r = null !== r ? r : "") ? (g = u, 58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? s = [s, o] : (s = null, u = g), null !== (s = null !== s ? s : "") ? ("::" === n.substr(u, 2) ? (o = "::", u += 2) : (o = null, i('"::"')), null !== o && null !== (a = fe()) ? e = [e, t, l, r, s, o, a] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? (g = u, 58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? r = [r, s] : (r = null, u = g), null !== (r = null !== r ? r : "") ? (g = u, 58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? s = [s, o] : (s = null, u = g), null !== (s = null !== s ? s : "") ? (g = u, 58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? o = [o, a] : (o = null, u = g), null !== (o = null !== o ? o : "") ? ("::" === n.substr(u, 2) ? (a = "::", u += 2) : (a = null, i('"::"')), null !== a && null !== (c = de()) ? e = [e, t, l, r, s, o, a, c] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v), null === e && (v = u, null !== (e = de()) ? (g = u, 58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? t = [t, l] : (t = null, u = g), null !== (t = null !== t ? t : "") ? (g = u, 58 === n.charCodeAt(u) ? (l = ":", u++) : (l = null, i('":"')), null !== l && null !== (r = de()) ? l = [l, r] : (l = null, u = g), null !== (l = null !== l ? l : "") ? (g = u, 58 === n.charCodeAt(u) ? (r = ":", u++) : (r = null, i('":"')), null !== r && null !== (s = de()) ? r = [r, s] : (r = null, u = g), null !== (r = null !== r ? r : "") ? (g = u, 58 === n.charCodeAt(u) ? (s = ":", u++) : (s = null, i('":"')), null !== s && null !== (o = de()) ? s = [s, o] : (s = null, u = g), null !== (s = null !== s ? s : "") ? (g = u, 58 === n.charCodeAt(u) ? (o = ":", u++) : (o = null, i('":"')), null !== o && null !== (a = de()) ? o = [o, a] : (o = null, u = g), null !== (o = null !== o ? o : "") ? (g = u, 58 === n.charCodeAt(u) ? (a = ":", u++) : (a = null, i('":"')), null !== a && null !== (c = de()) ? a = [a, c] : (a = null, u = g), null !== (a = null !== a ? a : "") ? ("::" === n.substr(u, 2) ? (c = "::", u += 2) : (c = null, i('"::"')), null !== c ? e = [e, t, l, r, s, o, a, c] : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v)) : (e = null, u = v))))))))))))))), null !== e && (e = function(e) {
                                  return Ht.host_type = "IPv6", n.substring(u, e)
                              }(m)), null === e && (u = m), e
                          }

                          function de() {
                              var e, n, t, l, r;
                              return r = u, null !== (e = d()) && null !== (n = null !== (n = d()) ? n : "") && null !== (t = null !== (t = d()) ? t : "") && null !== (l = null !== (l = d()) ? l : "") ? e = [e, n, t, l] : (e = null, u = r), e
                          }

                          function fe() {
                              var e, t, l, r;
                              return r = u, null !== (e = de()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t && null !== (l = de()) ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r), null === e && (e = _e()), e
                          }

                          function _e() {
                              var e, t, l, r, s, o, a, c, h;
                              return c = u, h = u, null !== (e = pe()) ? (46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null !== t && null !== (l = pe()) ? (46 === n.charCodeAt(u) ? (r = ".", u++) : (r = null, i('"."')), null !== r && null !== (s = pe()) ? (46 === n.charCodeAt(u) ? (o = ".", u++) : (o = null, i('"."')), null !== o && null !== (a = pe()) ? e = [e, t, l, r, s, o, a] : (e = null, u = h)) : (e = null, u = h)) : (e = null, u = h)) : (e = null, u = h), null !== e && (e = function(e) {
                                  return Ht.host_type = "IPv4", n.substring(u, e)
                              }(c)), null === e && (u = c), e
                          }

                          function pe() {
                              var e, t, l, r;
                              return r = u, "25" === n.substr(u, 2) ? (e = "25", u += 2) : (e = null, i('"25"')), null !== e ? (/^[0-5]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[0-5]")), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null === e && (r = u, 50 === n.charCodeAt(u) ? (e = "2", u++) : (e = null, i('"2"')), null !== e ? (/^[0-4]/.test(n.charAt(u)) ? (t = n.charAt(u), u++) : (t = null, i("[0-4]")), null !== t && null !== (l = c()) ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r), null === e && (r = u, 49 === n.charCodeAt(u) ? (e = "1", u++) : (e = null, i('"1"')), null !== e && null !== (t = c()) && null !== (l = c()) ? e = [e, t, l] : (e = null, u = r), null === e && (r = u, /^[1-9]/.test(n.charAt(u)) ? (e = n.charAt(u), u++) : (e = null, i("[1-9]")), null !== e && null !== (t = c()) ? e = [e, t] : (e = null, u = r), null === e && (e = c())))), e
                          }

                          function me() {
                              var e, n, t, l, r, s, o, i;
                              return s = u, o = u, null !== (e = null !== (e = c()) ? e : "") && null !== (n = null !== (n = c()) ? n : "") && null !== (t = null !== (t = c()) ? t : "") && null !== (l = null !== (l = c()) ? l : "") && null !== (r = null !== (r = c()) ? r : "") ? e = [e, n, t, l, r] : (e = null, u = o), null !== e && (i = e, i = parseInt(i.join("")), Ht.port = i, e = i), null === e && (u = s), e
                          }

                          function ve() {
                              var e, t, l, r;
                              for (e = [], r = u, 59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null !== t && null !== (l = ge()) ? t = [t, l] : (t = null, u = r); null !== t;) e.push(t), r = u, 59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null !== t && null !== (l = ge()) ? t = [t, l] : (t = null, u = r);
                              return e
                          }

                          function ge() {
                              var e;
                              return null === (e = ye()) && null === (e = Ce()) && null === (e = Te()) && null === (e = Ae()) && null === (e = be()) && null === (e = Ee()) && (e = Se()), e
                          }

                          function ye() {
                              var e, t, l, r, s;
                              return l = u, r = u, "transport=" === n.substr(u, 10).toLowerCase() ? (e = n.substr(u, 10), u += 10) : (e = null, i('"transport="')), null !== e ? ("udp" === n.substr(u, 3).toLowerCase() ? (t = n.substr(u, 3), u += 3) : (t = null, i('"udp"')), null === t && ("tcp" === n.substr(u, 3).toLowerCase() ? (t = n.substr(u, 3), u += 3) : (t = null, i('"tcp"')), null === t && ("sctp" === n.substr(u, 4).toLowerCase() ? (t = n.substr(u, 4), u += 4) : (t = null, i('"sctp"')), null === t && ("tls" === n.substr(u, 3).toLowerCase() ? (t = n.substr(u, 3), u += 3) : (t = null, i('"tls"')), null === t && (t = N())))), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null !== e && (s = e[1], Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.transport = s.toLowerCase())), null === e && (u = l), e
                          }

                          function Ce() {
                              var e, t, l, r, s;
                              return l = u, r = u, "user=" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"user="')), null !== e ? ("phone" === n.substr(u, 5).toLowerCase() ? (t = n.substr(u, 5), u += 5) : (t = null, i('"phone"')), null === t && ("ip" === n.substr(u, 2).toLowerCase() ? (t = n.substr(u, 2), u += 2) : (t = null, i('"ip"')), null === t && (t = N())), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null !== e && (s = e[1], Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.user = s.toLowerCase())), null === e && (u = l), e
                          }

                          function Te() {
                              var e, t, l, r, s;
                              return l = u, r = u, "method=" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"method="')), null !== e && null !== (t = cn()) ? e = [e, t] : (e = null, u = r), null !== e && (s = e[1], Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.method = s)), null === e && (u = l), e
                          }

                          function Ae() {
                              var e, t, l, r, s;
                              return l = u, r = u, "ttl=" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"ttl="')), null !== e && null !== (t = Et()) ? e = [e, t] : (e = null, u = r), null !== e && (s = e[1], Ht.params || (Ht.params = {}), e = void(Ht.params.ttl = s)), null === e && (u = l), e
                          }

                          function be() {
                              var e, t, l, r, s;
                              return l = u, r = u, "maddr=" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"maddr="')), null !== e && null !== (t = se()) ? e = [e, t] : (e = null, u = r), null !== e && (s = e[1], Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.maddr = s)), null === e && (u = l), e
                          }

                          function Ee() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "lr" === n.substr(u, 2).toLowerCase() ? (e = n.substr(u, 2), u += 2) : (e = null, i('"lr"')), null !== e ? (o = u, 61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null !== t && null !== (l = N()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = s)) : (e = null, u = s), null !== e && (Ht.uri_params || (Ht.uri_params = {}), e = void(Ht.uri_params.lr = void 0)), null === e && (u = r), e
                          }

                          function Se() {
                              var e, t, l, r, s, o, a, c;
                              return r = u, s = u, null !== (e = Re()) ? (o = u, 61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null !== t && null !== (l = we()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = s)) : (e = null, u = s), null !== e && (a = e[0], c = e[1], Ht.uri_params || (Ht.uri_params = {}), c = void 0 === c ? void 0 : c[1], e = void(Ht.uri_params[a.toLowerCase()] = c)), null === e && (u = r), e
                          }

                          function Re() {
                              var e, n, t;
                              if (t = u, null !== (n = Ie()))
                                  for (e = []; null !== n;) e.push(n), n = Ie();
                              else e = null;
                              return null !== e && (e = e.join("")), null === e && (u = t), e
                          }

                          function we() {
                              var e, n, t;
                              if (t = u, null !== (n = Ie()))
                                  for (e = []; null !== n;) e.push(n), n = Ie();
                              else e = null;
                              return null !== e && (e = e.join("")), null === e && (u = t), e
                          }

                          function Ie() {
                              var e;
                              return null === (e = Oe()) && null === (e = C()) && (e = A()), e
                          }

                          function Oe() {
                              var e;
                              return 91 === n.charCodeAt(u) ? (e = "[", u++) : (e = null, i('"["')), null === e && (93 === n.charCodeAt(u) ? (e = "]", u++) : (e = null, i('"]"')), null === e && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')))))))), e
                          }

                          function Ne() {
                              var e, t, l, r, s, o, a;
                              if (o = u, 63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null !== e)
                                  if (null !== (t = ke())) {
                                      for (l = [], a = u, 38 === n.charCodeAt(u) ? (r = "&", u++) : (r = null, i('"&"')), null !== r && null !== (s = ke()) ? r = [r, s] : (r = null, u = a); null !== r;) l.push(r), a = u, 38 === n.charCodeAt(u) ? (r = "&", u++) : (r = null, i('"&"')), null !== r && null !== (s = ke()) ? r = [r, s] : (r = null, u = a);
                                      null !== l ? e = [e, t, l] : (e = null, u = o)
                                  } else e = null, u = o;
                              else e = null, u = o;
                              return e
                          }

                          function ke() {
                              var e, t, l, r, s, o, a;
                              return r = u, s = u, null !== (e = xe()) ? (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null !== t && null !== (l = De()) ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (o = e[0], a = e[2], o = o.join("").toLowerCase(), a = a.join(""), Ht.uri_headers || (Ht.uri_headers = {}), e = void(Ht.uri_headers[o] ? Ht.uri_headers[o].push(a) : Ht.uri_headers[o] = [a])), null === e && (u = r), e
                          }

                          function xe() {
                              var e, n;
                              if (null === (n = Pe()) && null === (n = C()) && (n = A()), null !== n)
                                  for (e = []; null !== n;) e.push(n), null === (n = Pe()) && null === (n = C()) && (n = A());
                              else e = null;
                              return e
                          }

                          function De() {
                              var e, n;
                              for (e = [], null === (n = Pe()) && null === (n = C()) && (n = A()); null !== n;) e.push(n), null === (n = Pe()) && null === (n = C()) && (n = A());
                              return e
                          }

                          function Pe() {
                              var e;
                              return 91 === n.charCodeAt(u) ? (e = "[", u++) : (e = null, i('"["')), null === e && (93 === n.charCodeAt(u) ? (e = "]", u++) : (e = null, i('"]"')), null === e && (47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')))))))), e
                          }

                          function Ue() {
                              var e, n, t, l, r, s;
                              return s = u, null !== (e = cn()) && null !== (n = m()) && null !== (t = Le()) && null !== (l = m()) && null !== (r = Ze()) ? e = [e, n, t, l, r] : (e = null, u = s), e
                          }

                          function Le() {
                              var e;
                              return null === (e = X()) && (e = qe()), e
                          }

                          function qe() {
                              var e, t, l, r;
                              return r = u, null !== (e = Ke()) ? (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null !== t ? (null === (l = Me()) && (l = je()), null !== l ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function Me() {
                              var e, t, l, r, s;
                              return r = u, null === (e = Fe()) && (e = He()), null !== e ? (s = u, 63 === n.charCodeAt(u) ? (t = "?", u++) : (t = null, i('"?"')), null !== t && null !== (l = Qe()) ? t = [t, l] : (t = null, u = s), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function Fe() {
                              var e, t, l, r;
                              return r = u, "//" === n.substr(u, 2) ? (e = "//", u += 2) : (e = null, i('"//"')), null !== e && null !== (t = ze()) && null !== (l = null !== (l = He()) ? l : "") ? e = [e, t, l] : (e = null, u = r), e
                          }

                          function He() {
                              var e, t, l;
                              return l = u, 47 === n.charCodeAt(u) ? (e = "/", u++) : (e = null, i('"/"')), null !== e && null !== (t = Ve()) ? e = [e, t] : (e = null, u = l), e
                          }

                          function je() {
                              var e, n, t, l;
                              if (l = u, null !== (e = Be())) {
                                  for (n = [], t = Ge(); null !== t;) n.push(t), t = Ge();
                                  null !== n ? e = [e, n] : (e = null, u = l)
                              } else e = null, u = l;
                              return e
                          }

                          function Ge() {
                              var e;
                              return null === (e = y()) && null === (e = C()) && (e = A()), e
                          }

                          function Be() {
                              var e;
                              return null === (e = C()) && null === (e = A()) && (59 === n.charCodeAt(u) ? (e = ";", u++) : (e = null, i('";"')), null === e && (63 === n.charCodeAt(u) ? (e = "?", u++) : (e = null, i('"?"')), null === e && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (64 === n.charCodeAt(u) ? (e = "@", u++) : (e = null, i('"@"')), null === e && (38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","'))))))))))), e
                          }

                          function Ve() {
                              var e, t, l, r, s, o;
                              if (s = u, null !== (e = We())) {
                                  for (t = [], o = u, 47 === n.charCodeAt(u) ? (l = "/", u++) : (l = null, i('"/"')), null !== l && null !== (r = We()) ? l = [l, r] : (l = null, u = o); null !== l;) t.push(l), o = u, 47 === n.charCodeAt(u) ? (l = "/", u++) : (l = null, i('"/"')), null !== l && null !== (r = We()) ? l = [l, r] : (l = null, u = o);
                                  null !== t ? e = [e, t] : (e = null, u = s)
                              } else e = null, u = s;
                              return e
                          }

                          function We() {
                              var e, t, l, r, s, o;
                              for (s = u, e = [], t = Ye(); null !== t;) e.push(t), t = Ye();
                              if (null !== e) {
                                  for (t = [], o = u, 59 === n.charCodeAt(u) ? (l = ";", u++) : (l = null, i('";"')), null !== l && null !== (r = $e()) ? l = [l, r] : (l = null, u = o); null !== l;) t.push(l), o = u, 59 === n.charCodeAt(u) ? (l = ";", u++) : (l = null, i('";"')), null !== l && null !== (r = $e()) ? l = [l, r] : (l = null, u = o);
                                  null !== t ? e = [e, t] : (e = null, u = s)
                              } else e = null, u = s;
                              return e
                          }

                          function $e() {
                              var e, n;
                              for (e = [], n = Ye(); null !== n;) e.push(n), n = Ye();
                              return e
                          }

                          function Ye() {
                              var e;
                              return null === (e = C()) && null === (e = A()) && (58 === n.charCodeAt(u) ? (e = ":", u++) : (e = null, i('":"')), null === e && (64 === n.charCodeAt(u) ? (e = "@", u++) : (e = null, i('"@"')), null === e && (38 === n.charCodeAt(u) ? (e = "&", u++) : (e = null, i('"&"')), null === e && (61 === n.charCodeAt(u) ? (e = "=", u++) : (e = null, i('"="')), null === e && (43 === n.charCodeAt(u) ? (e = "+", u++) : (e = null, i('"+"')), null === e && (36 === n.charCodeAt(u) ? (e = "$", u++) : (e = null, i('"$"')), null === e && (44 === n.charCodeAt(u) ? (e = ",", u++) : (e = null, i('","'))))))))), e
                          }

                          function Ke() {
                              var e, t, l, r, s;
                              if (r = u, s = u, null !== (e = h())) {
                                  for (t = [], null === (l = h()) && null === (l = c()) && (43 === n.charCodeAt(u) ? (l = "+", u++) : (l = null, i('"+"')), null === l && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."'))))); null !== l;) t.push(l), null === (l = h()) && null === (l = c()) && (43 === n.charCodeAt(u) ? (l = "+", u++) : (l = null, i('"+"')), null === l && (45 === n.charCodeAt(u) ? (l = "-", u++) : (l = null, i('"-"')), null === l && (46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')))));
                                  null !== t ? e = [e, t] : (e = null, u = s)
                              } else e = null, u = s;
                              return null !== e && (e = function(e) {
                                  Ht.scheme = n.substring(u, e)
                              }(r)), null === e && (u = r), e
                          }

                          function ze() {
                              var e;
                              return null === (e = Je()) && (e = Xe()), e
                          }

                          function Je() {
                              var e, t, l, r;
                              return l = u, r = u, null !== (e = ne()) ? (64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null !== t ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), null !== (e = null !== e ? e : "") && null !== (t = ue()) ? e = [e, t] : (e = null, u = l), null !== e ? e : ""
                          }

                          function Xe() {
                              var e, t;
                              if (null === (t = C()) && null === (t = A()) && (36 === n.charCodeAt(u) ? (t = "$", u++) : (t = null, i('"$"')), null === t && (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","')), null === t && (59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null === t && (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null === t && (64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null === t && (38 === n.charCodeAt(u) ? (t = "&", u++) : (t = null, i('"&"')), null === t && (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"')))))))))), null !== t)
                                  for (e = []; null !== t;) e.push(t), null === (t = C()) && null === (t = A()) && (36 === n.charCodeAt(u) ? (t = "$", u++) : (t = null, i('"$"')), null === t && (44 === n.charCodeAt(u) ? (t = ",", u++) : (t = null, i('","')), null === t && (59 === n.charCodeAt(u) ? (t = ";", u++) : (t = null, i('";"')), null === t && (58 === n.charCodeAt(u) ? (t = ":", u++) : (t = null, i('":"')), null === t && (64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null === t && (38 === n.charCodeAt(u) ? (t = "&", u++) : (t = null, i('"&"')), null === t && (61 === n.charCodeAt(u) ? (t = "=", u++) : (t = null, i('"="')), null === t && (43 === n.charCodeAt(u) ? (t = "+", u++) : (t = null, i('"+"'))))))))));
                              else e = null;
                              return e
                          }

                          function Qe() {
                              var e, n;
                              for (e = [], n = Ge(); null !== n;) e.push(n), n = Ge();
                              return e
                          }

                          function Ze() {
                              var e, t, l, r, s, o, a, h;
                              if (a = u, h = u, "sip" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"SIP"')), null !== e)
                                  if (47 === n.charCodeAt(u) ? (t = "/", u++) : (t = null, i('"/"')), null !== t) {
                                      if (null !== (r = c()))
                                          for (l = []; null !== r;) l.push(r), r = c();
                                      else l = null;
                                      if (null !== l)
                                          if (46 === n.charCodeAt(u) ? (r = ".", u++) : (r = null, i('"."')), null !== r) {
                                              if (null !== (o = c()))
                                                  for (s = []; null !== o;) s.push(o), o = c();
                                              else s = null;
                                              null !== s ? e = [e, t, l, r, s] : (e = null, u = h)
                                          } else e = null, u = h;
                                      else e = null, u = h
                                  } else e = null, u = h;
                              else e = null, u = h;
                              return null !== e && (e = function(e) {
                                  Ht.sip_version = n.substring(u, e)
                              }(a)), null === e && (u = a), e
                          }

                          function en() {
                              var e;
                              return "INVITE" === n.substr(u, 6) ? (e = "INVITE", u += 6) : (e = null, i('"INVITE"')), e
                          }

                          function nn() {
                              var e;
                              return "ACK" === n.substr(u, 3) ? (e = "ACK", u += 3) : (e = null, i('"ACK"')), e
                          }

                          function tn() {
                              var e;
                              return "OPTIONS" === n.substr(u, 7) ? (e = "OPTIONS", u += 7) : (e = null, i('"OPTIONS"')), e
                          }

                          function ln() {
                              var e;
                              return "BYE" === n.substr(u, 3) ? (e = "BYE", u += 3) : (e = null, i('"BYE"')), e
                          }

                          function rn() {
                              var e;
                              return "CANCEL" === n.substr(u, 6) ? (e = "CANCEL", u += 6) : (e = null, i('"CANCEL"')), e
                          }

                          function un() {
                              var e;
                              return "REGISTER" === n.substr(u, 8) ? (e = "REGISTER", u += 8) : (e = null, i('"REGISTER"')), e
                          }

                          function sn() {
                              var e;
                              return "SUBSCRIBE" === n.substr(u, 9) ? (e = "SUBSCRIBE", u += 9) : (e = null, i('"SUBSCRIBE"')), e
                          }

                          function on() {
                              var e;
                              return "NOTIFY" === n.substr(u, 6) ? (e = "NOTIFY", u += 6) : (e = null, i('"NOTIFY"')), e
                          }

                          function an() {
                              var e;
                              return "REFER" === n.substr(u, 5) ? (e = "REFER", u += 5) : (e = null, i('"REFER"')), e
                          }

                          function cn() {
                              var e, t;
                              return t = u, null === (e = en()) && null === (e = nn()) && null === (e = tn()) && null === (e = ln()) && null === (e = rn()) && null === (e = un()) && null === (e = sn()) && null === (e = on()) && null === (e = an()) && (e = N()), null !== e && (e = function(e) {
                                  return Ht.method = n.substring(u, e), Ht.method
                              }(t)), null === e && (u = t), e
                          }

                          function hn() {
                              var e, n, t, l, r, s;
                              return s = u, null !== (e = Ze()) && null !== (n = m()) && null !== (t = dn()) && null !== (l = m()) && null !== (r = _n()) ? e = [e, n, t, l, r] : (e = null, u = s), e
                          }

                          function dn() {
                              var e, n, t;
                              return n = u, null !== (e = fn()) && (t = e, e = void(Ht.status_code = parseInt(t.join("")))), null === e && (u = n), e
                          }

                          function fn() {
                              var e, n, t, l;
                              return l = u, null !== (e = c()) && null !== (n = c()) && null !== (t = c()) ? e = [e, n, t] : (e = null, u = l), e
                          }

                          function _n() {
                              var e, t, l;
                              for (l = u, e = [], null === (t = y()) && null === (t = C()) && null === (t = A()) && null === (t = I()) && null === (t = O()) && null === (t = m()) && (t = v()); null !== t;) e.push(t), null === (t = y()) && null === (t = C()) && null === (t = A()) && null === (t = I()) && null === (t = O()) && null === (t = m()) && (t = v());
                              return null !== e && (e = function(e) {
                                  Ht.reason_phrase = n.substring(u, e)
                              }(l)), null === e && (u = l), e
                          }

                          function pn() {
                              var e, n, t, l, r, s, o;
                              if (r = u, s = u, null === (e = J()) && (e = mn()), null !== e) {
                                  for (n = [], o = u, null !== (t = j()) && null !== (l = gn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = gn()) ? t = [t, l] : (t = null, u = o);
                                  null !== n ? e = [e, n] : (e = null, u = s)
                              } else e = null, u = s;
                              return null !== e && (e = function(e) {
                                  var n;
                                  Ht.multi_header || (Ht.multi_header = []);
                                  try {
                                      n = new Ft(Ht.uri, Ht.display_name, Ht.params), delete Ht.uri, delete Ht.display_name, delete Ht.params
                                  } catch (e) {
                                      n = null
                                  }
                                  Ht.multi_header.push({
                                      possition: u,
                                      offset: e,
                                      parsed: n
                                  })
                              }(r)), null === e && (u = r), e
                          }

                          function mn() {
                              var e, n, t, l, r;
                              return r = u, null !== (e = null !== (e = vn()) ? e : "") && null !== (n = F()) && null !== (t = X()) && null !== (l = M()) ? e = [e, n, t, l] : (e = null, u = r), e
                          }

                          function vn() {
                              var e, n, t, l, r, s, o, i;
                              if (r = u, s = u, null !== (e = N())) {
                                  for (n = [], o = u, null !== (t = b()) && null !== (l = N()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = b()) && null !== (l = N()) ? t = [t, l] : (t = null, u = o);
                                  null !== n ? e = [e, n] : (e = null, u = s)
                              } else e = null, u = s;
                              return null === e && (e = Y()), null !== e && (i = e, e = void(Ht.display_name = "string" == typeof i ? i : i[1].reduce((function(e, n) {
                                  return e + n[0] + n[1]
                              }), i[0]))), null === e && (u = r), e
                          }

                          function gn() {
                              var e;
                              return null === (e = yn()) && null === (e = Cn()) && (e = bn()), e
                          }

                          function yn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "q" === n.substr(u, 1).toLowerCase() ? (e = n.substr(u, 1), u++) : (e = null, i('"q"')), null !== e && null !== (t = U()) && null !== (l = An()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], Ht.params || (Ht.params = {}), e = void(Ht.params.q = o)), null === e && (u = r), e
                          }

                          function Cn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "expires" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"expires"')), null !== e && null !== (t = U()) && null !== (l = Tn()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], Ht.params || (Ht.params = {}), e = void(Ht.params.expires = o)), null === e && (u = r), e
                          }

                          function Tn() {
                              var e, n, t;
                              if (t = u, null !== (n = c()))
                                  for (e = []; null !== n;) e.push(n), n = c();
                              else e = null;
                              return null !== e && (e = parseInt(e.join(""))), null === e && (u = t), e
                          }

                          function An() {
                              var e, t, l, r, s, o, a, h;
                              return o = u, a = u, 48 === n.charCodeAt(u) ? (e = "0", u++) : (e = null, i('"0"')), null !== e ? (h = u, 46 === n.charCodeAt(u) ? (t = ".", u++) : (t = null, i('"."')), null !== t && null !== (l = null !== (l = c()) ? l : "") && null !== (r = null !== (r = c()) ? r : "") && null !== (s = null !== (s = c()) ? s : "") ? t = [t, l, r, s] : (t = null, u = h), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = a)) : (e = null, u = a), null !== e && (e = function(e) {
                                  return parseFloat(n.substring(u, e))
                              }(o)), null === e && (u = o), e
                          }

                          function bn() {
                              var e, n, t, l, r, s, o, i;
                              return l = u, r = u, null !== (e = N()) ? (s = u, null !== (n = U()) && null !== (t = En()) ? n = [n, t] : (n = null, u = s), null !== (n = null !== n ? n : "") ? e = [e, n] : (e = null, u = r)) : (e = null, u = r), null !== e && (o = e[0], i = e[1], Ht.params || (Ht.params = {}), i = void 0 === i ? void 0 : i[1], e = void(Ht.params[o.toLowerCase()] = i)), null === e && (u = l), e
                          }

                          function En() {
                              var e;
                              return null === (e = N()) && null === (e = se()) && (e = $()), e
                          }

                          function Sn() {
                              var e;
                              return "render" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"render"')), null === e && ("session" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"session"')), null === e && ("icon" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"icon"')), null === e && ("alert" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"alert"')), null === e && (e = N())))), e
                          }

                          function Rn() {
                              var e;
                              return null === (e = wn()) && (e = bn()), e
                          }

                          function wn() {
                              var e, t, l, r;
                              return r = u, "handling" === n.substr(u, 8).toLowerCase() ? (e = n.substr(u, 8), u += 8) : (e = null, i('"handling"')), null !== e && null !== (t = U()) ? ("optional" === n.substr(u, 8).toLowerCase() ? (l = n.substr(u, 8), u += 8) : (l = null, i('"optional"')), null === l && ("required" === n.substr(u, 8).toLowerCase() ? (l = n.substr(u, 8), u += 8) : (l = null, i('"required"')), null === l && (l = N())), null !== l ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function In() {
                              var e, n, t, l, r, s, o, i;
                              if (o = u, null !== (e = On()))
                                  if (null !== (n = P()))
                                      if (null !== (t = Pn())) {
                                          for (l = [], i = u, null !== (r = j()) && null !== (s = Un()) ? r = [r, s] : (r = null, u = i); null !== r;) l.push(r), i = u, null !== (r = j()) && null !== (s = Un()) ? r = [r, s] : (r = null, u = i);
                                          null !== l ? e = [e, n, t, l] : (e = null, u = o)
                                      } else e = null, u = o;
                              else e = null, u = o;
                              else e = null, u = o;
                              return e
                          }

                          function On() {
                              var e;
                              return null === (e = Nn()) && (e = kn()), e
                          }

                          function Nn() {
                              var e;
                              return "text" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"text"')), null === e && ("image" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"image"')), null === e && ("audio" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"audio"')), null === e && ("video" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"video"')), null === e && ("application" === n.substr(u, 11).toLowerCase() ? (e = n.substr(u, 11), u += 11) : (e = null, i('"application"')), null === e && (e = xn()))))), e
                          }

                          function kn() {
                              var e;
                              return "message" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"message"')), null === e && ("multipart" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"multipart"')), null === e && (e = xn())), e
                          }

                          function xn() {
                              var e;
                              return null === (e = N()) && (e = Dn()), e
                          }

                          function Dn() {
                              var e, t, l;
                              return l = u, "x-" === n.substr(u, 2).toLowerCase() ? (e = n.substr(u, 2), u += 2) : (e = null, i('"x-"')), null !== e && null !== (t = N()) ? e = [e, t] : (e = null, u = l), e
                          }

                          function Pn() {
                              var e;
                              return null === (e = xn()) && (e = N()), e
                          }

                          function Un() {
                              var e, n, t, l;
                              return l = u, null !== (e = N()) && null !== (n = U()) && null !== (t = Ln()) ? e = [e, n, t] : (e = null, u = l), e
                          }

                          function Ln() {
                              var e;
                              return null === (e = N()) && (e = $()), e
                          }

                          function qn() {
                              var e, n, t, l;
                              if (t = u, null !== (n = c()))
                                  for (e = []; null !== n;) e.push(n), n = c();
                              else e = null;
                              return null !== e && (l = e, e = void(Ht.value = parseInt(l.join("")))), null === e && (u = t), e
                          }

                          function Mn() {
                              var e, t, l, r, s, o;
                              if (s = u, null !== (e = k())) {
                                  for (t = [], o = u, 46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== l && null !== (r = k()) ? l = [l, r] : (l = null, u = o); null !== l;) t.push(l), o = u, 46 === n.charCodeAt(u) ? (l = ".", u++) : (l = null, i('"."')), null !== l && null !== (r = k()) ? l = [l, r] : (l = null, u = o);
                                  null !== t ? e = [e, t] : (e = null, u = s)
                              } else e = null, u = s;
                              return e
                          }

                          function Fn() {
                              var e;
                              return null === (e = Hn()) && (e = bn()), e
                          }

                          function Hn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "tag" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"tag"')), null !== e && null !== (t = U()) && null !== (l = N()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.tag = o)), null === e && (u = r), e
                          }

                          function jn() {
                              var e, t, l, r, s, o, a, c;
                              if (a = u, "digest" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"Digest"')), null !== e)
                                  if (null !== (t = b()))
                                      if (null !== (l = Vn())) {
                                          for (r = [], c = u, null !== (s = H()) && null !== (o = Vn()) ? s = [s, o] : (s = null, u = c); null !== s;) r.push(s), c = u, null !== (s = H()) && null !== (o = Vn()) ? s = [s, o] : (s = null, u = c);
                                          null !== r ? e = [e, t, l, r] : (e = null, u = a)
                                      } else e = null, u = a;
                              else e = null, u = a;
                              else e = null, u = a;
                              return null === e && (e = Gn()), e
                          }

                          function Gn() {
                              var e, n, t, l, r, s, o, i;
                              if (o = u, null !== (e = N()))
                                  if (null !== (n = b()))
                                      if (null !== (t = Bn())) {
                                          for (l = [], i = u, null !== (r = H()) && null !== (s = Bn()) ? r = [r, s] : (r = null, u = i); null !== r;) l.push(r), i = u, null !== (r = H()) && null !== (s = Bn()) ? r = [r, s] : (r = null, u = i);
                                          null !== l ? e = [e, n, t, l] : (e = null, u = o)
                                      } else e = null, u = o;
                              else e = null, u = o;
                              else e = null, u = o;
                              return e
                          }

                          function Bn() {
                              var e, n, t, l;
                              return l = u, null !== (e = N()) && null !== (n = U()) ? (null === (t = N()) && (t = $()), null !== t ? e = [e, n, t] : (e = null, u = l)) : (e = null, u = l), e
                          }

                          function Vn() {
                              var e;
                              return null === (e = Wn()) && null === (e = Yn()) && null === (e = zn()) && null === (e = Xn()) && null === (e = Qn()) && null === (e = Zn()) && null === (e = et()) && (e = Bn()), e
                          }

                          function Wn() {
                              var e, t, l, r;
                              return r = u, "realm" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"realm"')), null !== e && null !== (t = U()) && null !== (l = $n()) ? e = [e, t, l] : (e = null, u = r), e
                          }

                          function $n() {
                              var e, n, t;
                              return n = u, null !== (e = Y()) && (t = e, e = void(Ht.realm = t)), null === e && (u = n), e
                          }

                          function Yn() {
                              var e, t, l, r, s, o, a, c, h;
                              if (c = u, "domain" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"domain"')), null !== e)
                                  if (null !== (t = U()))
                                      if (null !== (l = B()))
                                          if (null !== (r = Kn())) {
                                              if (s = [], h = u, null !== (a = m()))
                                                  for (o = []; null !== a;) o.push(a), a = m();
                                              else o = null;
                                              for (null !== o && null !== (a = Kn()) ? o = [o, a] : (o = null, u = h); null !== o;) {
                                                  if (s.push(o), h = u, null !== (a = m()))
                                                      for (o = []; null !== a;) o.push(a), a = m();
                                                  else o = null;
                                                  null !== o && null !== (a = Kn()) ? o = [o, a] : (o = null, u = h)
                                              }
                                              null !== s && null !== (o = V()) ? e = [e, t, l, r, s, o] : (e = null, u = c)
                                          } else e = null, u = c;
                              else e = null, u = c;
                              else e = null, u = c;
                              else e = null, u = c;
                              return e
                          }

                          function Kn() {
                              var e;
                              return null === (e = qe()) && (e = He()), e
                          }

                          function zn() {
                              var e, t, l, r;
                              return r = u, "nonce" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"nonce"')), null !== e && null !== (t = U()) && null !== (l = Jn()) ? e = [e, t, l] : (e = null, u = r), e
                          }

                          function Jn() {
                              var e, n, t;
                              return n = u, null !== (e = Y()) && (t = e, e = void(Ht.nonce = t)), null === e && (u = n), e
                          }

                          function Xn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "opaque" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"opaque"')), null !== e && null !== (t = U()) && null !== (l = Y()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.opaque = o)), null === e && (u = r), e
                          }

                          function Qn() {
                              var e, t, l, r, s;
                              return r = u, "stale" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"stale"')), null !== e && null !== (t = U()) ? (s = u, "true" === n.substr(u, 4).toLowerCase() ? (l = n.substr(u, 4), u += 4) : (l = null, i('"true"')), null !== l && (l = void(Ht.stale = !0)), null === l && (u = s), null === l && (s = u, "false" === n.substr(u, 5).toLowerCase() ? (l = n.substr(u, 5), u += 5) : (l = null, i('"false"')), null !== l && (l = void(Ht.stale = !1)), null === l && (u = s)), null !== l ? e = [e, t, l] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function Zn() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "algorithm" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"algorithm"')), null !== e && null !== (t = U()) ? ("md5" === n.substr(u, 3).toLowerCase() ? (l = n.substr(u, 3), u += 3) : (l = null, i('"MD5"')), null === l && ("md5-sess" === n.substr(u, 8).toLowerCase() ? (l = n.substr(u, 8), u += 8) : (l = null, i('"MD5-sess"')), null === l && (l = N())), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.algorithm = o.toUpperCase())), null === e && (u = r), e
                          }

                          function et() {
                              var e, t, l, r, s, o, a, c, h, d;
                              if (c = u, "qop" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"qop"')), null !== e)
                                  if (null !== (t = U()))
                                      if (null !== (l = B())) {
                                          if (h = u, null !== (r = nt())) {
                                              for (s = [], d = u, 44 === n.charCodeAt(u) ? (o = ",", u++) : (o = null, i('","')), null !== o && null !== (a = nt()) ? o = [o, a] : (o = null, u = d); null !== o;) s.push(o), d = u, 44 === n.charCodeAt(u) ? (o = ",", u++) : (o = null, i('","')), null !== o && null !== (a = nt()) ? o = [o, a] : (o = null, u = d);
                                              null !== s ? r = [r, s] : (r = null, u = h)
                                          } else r = null, u = h;
                                          null !== r && null !== (s = V()) ? e = [e, t, l, r, s] : (e = null, u = c)
                                      } else e = null, u = c;
                              else e = null, u = c;
                              else e = null, u = c;
                              return e
                          }

                          function nt() {
                              var e, t, l;
                              return t = u, "auth-int" === n.substr(u, 8).toLowerCase() ? (e = n.substr(u, 8), u += 8) : (e = null, i('"auth-int"')), null === e && ("auth" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"auth"')), null === e && (e = N())), null !== e && (l = e, Ht.qop || (Ht.qop = []), e = void Ht.qop.push(l.toLowerCase())), null === e && (u = t), e
                          }

                          function tt() {
                              var e, n, t, l, r, s, o;
                              if (r = u, s = u, null !== (e = mn())) {
                                  for (n = [], o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o); null !== t;) n.push(t), o = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = o);
                                  null !== n ? e = [e, n] : (e = null, u = s)
                              } else e = null, u = s;
                              return null !== e && (e = function(e) {
                                  var n;
                                  Ht.multi_header || (Ht.multi_header = []);
                                  try {
                                      n = new Ft(Ht.uri, Ht.display_name, Ht.params), delete Ht.uri, delete Ht.display_name, delete Ht.params
                                  } catch (e) {
                                      n = null
                                  }
                                  Ht.multi_header.push({
                                      possition: u,
                                      offset: e,
                                      parsed: n
                                  })
                              }(r)), null === e && (u = r), e
                          }

                          function lt() {
                              var e;
                              return null === (e = rt()) && (e = bn()), e
                          }

                          function rt() {
                              var e, t, l, r, s, o, a;
                              if (s = u, o = u, "cause" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"cause"')), null !== e)
                                  if (null !== (t = U())) {
                                      if (null !== (r = c()))
                                          for (l = []; null !== r;) l.push(r), r = c();
                                      else l = null;
                                      null !== l ? e = [e, t, l] : (e = null, u = o)
                                  } else e = null, u = o;
                              else e = null, u = o;
                              return null !== e && (a = e[2], e = void(Ht.cause = parseInt(a.join("")))), null === e && (u = s), e
                          }

                          function ut() {
                              var e, n, t, l, r, s;
                              if (r = u, null !== (e = mn())) {
                                  for (n = [], s = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = s); null !== t;) n.push(t), s = u, null !== (t = j()) && null !== (l = bn()) ? t = [t, l] : (t = null, u = s);
                                  null !== n ? e = [e, n] : (e = null, u = r)
                              } else e = null, u = r;
                              return e
                          }

                          function st() {
                              var e, t;
                              return t = u, "active" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"active"')), null === e && ("pending" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"pending"')), null === e && ("terminated" === n.substr(u, 10).toLowerCase() ? (e = n.substr(u, 10), u += 10) : (e = null, i('"terminated"')), null === e && (e = N()))), null !== e && (e = function(e) {
                                  Ht.state = n.substring(u, e)
                              }(t)), null === e && (u = t), e
                          }

                          function ot() {
                              var e, t, l, r, s, o, a, c;
                              return r = u, s = u, "reason" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"reason"')), null !== e && null !== (t = U()) && null !== (l = it()) ? e = [e, t, l] : (e = null, u = s), null !== e && (e = void(void 0 !== (o = e[2]) && (Ht.reason = o))), null === e && (u = r), null === e && (r = u, s = u, "expires" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"expires"')), null !== e && null !== (t = U()) && null !== (l = Tn()) ? e = [e, t, l] : (e = null, u = s), null !== e && (e = void(void 0 !== (c = e[2]) && (Ht.expires = c))), null === e && (u = r), null === e && (r = u, s = u, "retry_after" === n.substr(u, 11).toLowerCase() ? (e = n.substr(u, 11), u += 11) : (e = null, i('"retry_after"')), null !== e && null !== (t = U()) && null !== (l = Tn()) ? e = [e, t, l] : (e = null, u = s), null !== e && (e = void(void 0 !== (a = e[2]) && (Ht.retry_after = a))), null === e && (u = r), null === e && (e = bn()))), e
                          }

                          function it() {
                              var e;
                              return "deactivated" === n.substr(u, 11).toLowerCase() ? (e = n.substr(u, 11), u += 11) : (e = null, i('"deactivated"')), null === e && ("probation" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"probation"')), null === e && ("rejected" === n.substr(u, 8).toLowerCase() ? (e = n.substr(u, 8), u += 8) : (e = null, i('"rejected"')), null === e && ("timeout" === n.substr(u, 7).toLowerCase() ? (e = n.substr(u, 7), u += 7) : (e = null, i('"timeout"')), null === e && ("giveup" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"giveup"')), null === e && ("noresource" === n.substr(u, 10).toLowerCase() ? (e = n.substr(u, 10), u += 10) : (e = null, i('"noresource"')), null === e && ("invariant" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"invariant"')), null === e && (e = N()))))))), e
                          }

                          function at() {
                              var e;
                              return null === (e = Hn()) && (e = bn()), e
                          }

                          function ct() {
                              var e, n, t, l, r, s, o, i;
                              if (o = u, null !== (e = gt()))
                                  if (null !== (n = b()))
                                      if (null !== (t = Tt())) {
                                          for (l = [], i = u, null !== (r = j()) && null !== (s = ht()) ? r = [r, s] : (r = null, u = i); null !== r;) l.push(r), i = u, null !== (r = j()) && null !== (s = ht()) ? r = [r, s] : (r = null, u = i);
                                          null !== l ? e = [e, n, t, l] : (e = null, u = o)
                                      } else e = null, u = o;
                              else e = null, u = o;
                              else e = null, u = o;
                              return e
                          }

                          function ht() {
                              var e;
                              return null === (e = dt()) && null === (e = ft()) && null === (e = _t()) && null === (e = pt()) && null === (e = mt()) && (e = bn()), e
                          }

                          function dt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "ttl" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"ttl"')), null !== e && null !== (t = U()) && null !== (l = Et()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.ttl = o)), null === e && (u = r), e
                          }

                          function ft() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "maddr" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"maddr"')), null !== e && null !== (t = U()) && null !== (l = se()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.maddr = o)), null === e && (u = r), e
                          }

                          function _t() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "received" === n.substr(u, 8).toLowerCase() ? (e = n.substr(u, 8), u += 8) : (e = null, i('"received"')), null !== e && null !== (t = U()) ? (null === (l = _e()) && (l = he()), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.received = o)), null === e && (u = r), e
                          }

                          function pt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "branch" === n.substr(u, 6).toLowerCase() ? (e = n.substr(u, 6), u += 6) : (e = null, i('"branch"')), null !== e && null !== (t = U()) && null !== (l = N()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.branch = o)), null === e && (u = r), e
                          }

                          function mt() {
                              var e, t, l, r, s;
                              return r = u, "rport" === n.substr(u, 5).toLowerCase() ? (e = n.substr(u, 5), u += 5) : (e = null, i('"rport"')), null !== e ? (s = u, null !== (t = U()) && null !== (l = vt()) ? t = [t, l] : (t = null, u = s), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = r)) : (e = null, u = r), e
                          }

                          function vt() {
                              var e, n, t, l, r, s, o, i;
                              return s = u, o = u, null !== (e = null !== (e = c()) ? e : "") && null !== (n = null !== (n = c()) ? n : "") && null !== (t = null !== (t = c()) ? t : "") && null !== (l = null !== (l = c()) ? l : "") && null !== (r = null !== (r = c()) ? r : "") ? e = [e, n, t, l, r] : (e = null, u = o), null !== e && (i = e, e = void(Ht.rport = parseInt(i.join("")))), null === e && (u = s), e
                          }

                          function gt() {
                              var e, n, t, l, r, s;
                              return s = u, null !== (e = yt()) && null !== (n = P()) && null !== (t = N()) && null !== (l = P()) && null !== (r = Ct()) ? e = [e, n, t, l, r] : (e = null, u = s), e
                          }

                          function yt() {
                              var e, t, l;
                              return t = u, "sip" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"SIP"')), null === e && (e = N()), null !== e && (l = e, e = void(Ht.protocol = l)), null === e && (u = t), e
                          }

                          function Ct() {
                              var e, t, l;
                              return t = u, "udp" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"UDP"')), null === e && ("tcp" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"TCP"')), null === e && ("tls" === n.substr(u, 3).toLowerCase() ? (e = n.substr(u, 3), u += 3) : (e = null, i('"TLS"')), null === e && ("sctp" === n.substr(u, 4).toLowerCase() ? (e = n.substr(u, 4), u += 4) : (e = null, i('"SCTP"')), null === e && (e = N())))), null !== e && (l = e, e = void(Ht.transport = l)), null === e && (u = t), e
                          }

                          function Tt() {
                              var e, n, t, l, r;
                              return l = u, null !== (e = At()) ? (r = u, null !== (n = G()) && null !== (t = bt()) ? n = [n, t] : (n = null, u = r), null !== (n = null !== n ? n : "") ? e = [e, n] : (e = null, u = l)) : (e = null, u = l), e
                          }

                          function At() {
                              var e, t;
                              return t = u, null === (e = _e()) && null === (e = ce()) && (e = oe()), null !== e && (e = function(e) {
                                  Ht.host = n.substring(u, e)
                              }(t)), null === e && (u = t), e
                          }

                          function bt() {
                              var e, n, t, l, r, s, o, i;
                              return s = u, o = u, null !== (e = null !== (e = c()) ? e : "") && null !== (n = null !== (n = c()) ? n : "") && null !== (t = null !== (t = c()) ? t : "") && null !== (l = null !== (l = c()) ? l : "") && null !== (r = null !== (r = c()) ? r : "") ? e = [e, n, t, l, r] : (e = null, u = o), null !== e && (i = e, e = void(Ht.port = parseInt(i.join("")))), null === e && (u = s), e
                          }

                          function Et() {
                              var e, n, t, l, r;
                              return l = u, r = u, null !== (e = c()) && null !== (n = null !== (n = c()) ? n : "") && null !== (t = null !== (t = c()) ? t : "") ? e = [e, n, t] : (e = null, u = r), null !== e && (e = parseInt(e.join(""))), null === e && (u = l), e
                          }

                          function St() {
                              var e, n, t;
                              return n = u, null !== (e = Tn()) && (t = e, e = void(Ht.expires = t)), null === e && (u = n), e
                          }

                          function Rt() {
                              var e;
                              return null === (e = wt()) && (e = bn()), e
                          }

                          function wt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "refresher" === n.substr(u, 9).toLowerCase() ? (e = n.substr(u, 9), u += 9) : (e = null, i('"refresher"')), null !== e && null !== (t = U()) ? ("uac" === n.substr(u, 3).toLowerCase() ? (l = n.substr(u, 3), u += 3) : (l = null, i('"uac"')), null === l && ("uas" === n.substr(u, 3).toLowerCase() ? (l = n.substr(u, 3), u += 3) : (l = null, i('"uas"'))), null !== l ? e = [e, t, l] : (e = null, u = s)) : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.refresher = o.toLowerCase())), null === e && (u = r), e
                          }

                          function It() {
                              var e, n;
                              for (e = [], null === (n = w()) && null === (n = O()) && (n = b()); null !== n;) e.push(n), null === (n = w()) && null === (n = O()) && (n = b());
                              return e
                          }

                          function Ot() {
                              var e, t, l, r, s, o, a, c, h, d, f;
                              return d = u, f = u, null !== (e = kt()) ? (45 === n.charCodeAt(u) ? (t = "-", u++) : (t = null, i('"-"')), null !== t && null !== (l = Nt()) ? (45 === n.charCodeAt(u) ? (r = "-", u++) : (r = null, i('"-"')), null !== r && null !== (s = Nt()) ? (45 === n.charCodeAt(u) ? (o = "-", u++) : (o = null, i('"-"')), null !== o && null !== (a = Nt()) ? (45 === n.charCodeAt(u) ? (c = "-", u++) : (c = null, i('"-"')), null !== c && null !== (h = xt()) ? e = [e, t, l, r, s, o, a, c, h] : (e = null, u = f)) : (e = null, u = f)) : (e = null, u = f)) : (e = null, u = f)) : (e = null, u = f), null !== e && (e = function(e, t) {
                                  Ht = n.substring(u + 5, e)
                              }(d, e[0])), null === e && (u = d), e
                          }

                          function Nt() {
                              var e, n, t, l, r;
                              return r = u, null !== (e = d()) && null !== (n = d()) && null !== (t = d()) && null !== (l = d()) ? e = [e, n, t, l] : (e = null, u = r), e
                          }

                          function kt() {
                              var e, n, t;
                              return t = u, null !== (e = Nt()) && null !== (n = Nt()) ? e = [e, n] : (e = null, u = t), e
                          }

                          function xt() {
                              var e, n, t, l;
                              return l = u, null !== (e = Nt()) && null !== (n = Nt()) && null !== (t = Nt()) ? e = [e, n, t] : (e = null, u = l), e
                          }

                          function Dt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, null !== (e = x()) ? (o = u, 64 === n.charCodeAt(u) ? (t = "@", u++) : (t = null, i('"@"')), null !== t && null !== (l = x()) ? t = [t, l] : (t = null, u = o), null !== (t = null !== t ? t : "") ? e = [e, t] : (e = null, u = s)) : (e = null, u = s), null !== e && (e = function(e) {
                                  Ht.call_id = n.substring(u, e)
                              }(r)), null === e && (u = r), e
                          }

                          function Pt() {
                              var e;
                              return null === (e = Ut()) && null === (e = Lt()) && null === (e = qt()) && (e = bn()), e
                          }

                          function Ut() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "to-tag" === n.substr(u, 6) ? (e = "to-tag", u += 6) : (e = null, i('"to-tag"')), null !== e && null !== (t = U()) && null !== (l = N()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.to_tag = o)), null === e && (u = r), e
                          }

                          function Lt() {
                              var e, t, l, r, s, o;
                              return r = u, s = u, "from-tag" === n.substr(u, 8) ? (e = "from-tag", u += 8) : (e = null, i('"from-tag"')), null !== e && null !== (t = U()) && null !== (l = N()) ? e = [e, t, l] : (e = null, u = s), null !== e && (o = e[2], e = void(Ht.from_tag = o)), null === e && (u = r), e
                          }

                          function qt() {
                              var e, t;
                              return t = u, "early-only" === n.substr(u, 10) ? (e = "early-only", u += 10) : (e = null, i('"early-only"')), null !== e && (e = void(Ht.early_only = !0)), null === e && (u = t), e
                          }
                          var Mt = t(874),
                              Ft = t(647),
                              Ht = {};
                          if (null === r[l]() || u !== n.length) {
                              var jt = Math.max(u, s),
                                  Gt = jt < n.length ? n.charAt(jt) : null,
                                  Bt = function() {
                                      for (var e = 1, t = 1, l = !1, r = 0; r < Math.max(u, s); r++) {
                                          var o = n.charAt(r);
                                          "\n" === o ? (l || e++, t = 1, l = !1) : "\r" === o || "\u2028" === o || "\u2029" === o ? (e++, t = 1, l = !0) : (t++, l = !1)
                                      }
                                      return {
                                          line: e,
                                          column: t
                                      }
                                  }();
                              return new this.SyntaxError(function(e) {
                                  e.sort();
                                  for (var n = null, t = [], l = 0; l < e.length; l++) e[l] !== n && (t.push(e[l]), n = e[l]);
                                  return t
                              }(o), Gt, jt, Bt.line, Bt.column), -1
                          }
                          return Ht
                      },
                      toSource: function() {
                          return this._source
                      },
                      SyntaxError: function(n, t, l, r, u) {
                          this.name = "SyntaxError", this.expected = n, this.found = t, this.message = function(n, t) {
                              var l;
                              switch (n.length) {
                                  case 0:
                                      l = "end of input";
                                      break;
                                  case 1:
                                      l = n[0];
                                      break;
                                  default:
                                      l = n.slice(0, n.length - 1).join(", ") + " or " + n[n.length - 1]
                              }
                              return "Expected " + l + " but " + (t ? e(t) : "end of input") + " found."
                          }(n, t), this.offset = l, this.line = r, this.column = u
                      }
                  };
                  return n.SyntaxError.prototype = Error.prototype, n
              }()
          },
          647: (e, n, t) => {
              const l = t(874),
                  r = t(824);
              e.exports = class e {
                  static parse(e) {
                      return -1 !== (e = r.parse(e, "Name_Addr_Header")) ? e : void 0
                  }
                  constructor(e, n, t) {
                      if (!(e && e instanceof l)) throw new TypeError('missing or invalid "uri" parameter');
                      this._uri = e, this._parameters = {}, this.display_name = n;
                      for (const e in t) Object.prototype.hasOwnProperty.call(t, e) && this.setParam(e, t[e])
                  }
                  get uri() {
                      return this._uri
                  }
                  get display_name() {
                      return this._display_name
                  }
                  set display_name(e) {
                      this._display_name = 0 === e ? "0" : e
                  }
                  setParam(e, n) {
                      e && (this._parameters[e.toLowerCase()] = null == n ? null : n.toString())
                  }
                  getParam(e) {
                      if (e) return this._parameters[e.toLowerCase()]
                  }
                  hasParam(e) {
                      if (e) return !!this._parameters.hasOwnProperty(e.toLowerCase())
                  }
                  deleteParam(e) {
                      if (e = e.toLowerCase(), this._parameters.hasOwnProperty(e)) {
                          const n = this._parameters[e];
                          return delete this._parameters[e], n
                      }
                  }
                  clearParams() {
                      this._parameters = {}
                  }
                  clone() {
                      return new e(this._uri.clone(), this._display_name, JSON.parse(JSON.stringify(this._parameters)))
                  }
                  _quote(e) {
                      return e.replace(/\\/g, "\\\\").replace(/"/g, '\\"')
                  }
                  toString() {
                      let e = this._display_name ? `"${this._quote(this._display_name)}" ` : "";
                      e += `<${this._uri.toString()}>`;
                      for (const n in this._parameters) Object.prototype.hasOwnProperty.call(this._parameters, n) && (e += `;${n}`, null !== this._parameters[n] && (e += `=${this._parameters[n]}`));
                      return e
                  }
              }
          },
          874: (e, n, t) => {
              const l = t(330),
                  r = t(142),
                  u = t(824);
              e.exports = class e {
                  static parse(e) {
                      return -1 !== (e = u.parse(e, "SIP_URI")) ? e : void 0
                  }
                  constructor(e, n, t, r, u = {}, s = {}) {
                      if (!t) throw new TypeError('missing or invalid "host" parameter');
                      this._parameters = {}, this._headers = {}, this._scheme = e || l.SIP, this._user = n, this._host = t, this._port = r;
                      for (const e in u) Object.prototype.hasOwnProperty.call(u, e) && this.setParam(e, u[e]);
                      for (const e in s) Object.prototype.hasOwnProperty.call(s, e) && this.setHeader(e, s[e])
                  }
                  get scheme() {
                      return this._scheme
                  }
                  set scheme(e) {
                      this._scheme = e.toLowerCase()
                  }
                  get user() {
                      return this._user
                  }
                  set user(e) {
                      this._user = e
                  }
                  get host() {
                      return this._host
                  }
                  set host(e) {
                      this._host = e.toLowerCase()
                  }
                  get port() {
                      return this._port
                  }
                  set port(e) {
                      this._port = 0 === e ? e : parseInt(e, 10) || null
                  }
                  setParam(e, n) {
                      e && (this._parameters[e.toLowerCase()] = null == n ? null : n.toString())
                  }
                  getParam(e) {
                      if (e) return this._parameters[e.toLowerCase()]
                  }
                  hasParam(e) {
                      if (e) return !!this._parameters.hasOwnProperty(e.toLowerCase())
                  }
                  deleteParam(e) {
                      if (e = e.toLowerCase(), this._parameters.hasOwnProperty(e)) {
                          const n = this._parameters[e];
                          return delete this._parameters[e], n
                      }
                  }
                  clearParams() {
                      this._parameters = {}
                  }
                  setHeader(e, n) {
                      this._headers[r.headerize(e)] = Array.isArray(n) ? n : [n]
                  }
                  getHeader(e) {
                      if (e) return this._headers[r.headerize(e)]
                  }
                  hasHeader(e) {
                      if (e) return !!this._headers.hasOwnProperty(r.headerize(e))
                  }
                  deleteHeader(e) {
                      if (e = r.headerize(e), this._headers.hasOwnProperty(e)) {
                          const n = this._headers[e];
                          return delete this._headers[e], n
                      }
                  }
                  clearHeaders() {
                      this._headers = {}
                  }
                  clone() {
                      return new e(this._scheme, this._user, this._host, this._port, JSON.parse(JSON.stringify(this._parameters)), JSON.parse(JSON.stringify(this._headers)))
                  }
                  toString() {
                      const e = [];
                      let n = `${this._scheme}:`;
                      this._user && (n += `${r.escapeUser(this._user)}@`), n += this._host, (this._port || 0 === this._port) && (n += `:${this._port}`);
                      for (const e in this._parameters) Object.prototype.hasOwnProperty.call(this._parameters, e) && (n += `;${e}`, null !== this._parameters[e] && (n += `=${this._parameters[e]}`));
                      for (const n in this._headers)
                          if (Object.prototype.hasOwnProperty.call(this._headers, n))
                              for (const t of this._headers[n]) e.push(`${n}=${t}`);
                      return e.length > 0 && (n += `?${e.join("&")}`), n
                  }
                  toAor(e) {
                      let n = `${this._scheme}:`;
                      return this._user && (n += `${r.escapeUser(this._user)}@`), n += this._host, e && (this._port || 0 === this._port) && (n += `:${this._port}`), n
                  }
              }
          },
          142: (e, n, t) => {
              const l = t(330),
                  r = t(874),
                  u = t(824);
              n.str_utf8_length = e => unescape(encodeURIComponent(e)).length;
              const s = n.isFunction = e => void 0 !== e && "[object Function]" === Object.prototype.toString.call(e);
              n.isString = e => void 0 !== e && "[object String]" === Object.prototype.toString.call(e), n.isDecimal = e => !isNaN(e) && parseFloat(e) === parseInt(e, 10), n.isEmpty = e => null === e || "" === e || void 0 === e || Array.isArray(e) && 0 === e.length || "number" == typeof e && isNaN(e), n.hasMethods = function(e, ...n) {
                  for (const t of n)
                      if (s(e[t])) return !1;
                  return !0
              };
              const o = n.createRandomToken = (e, n = 32) => {
                  let t, l, r = "";
                  for (t = 0; t < e; t++) l = Math.random() * n | 0, r += l.toString(n);
                  return r
              };
              n.newTag = () => o(10), n.newUUID = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (e => {
                  const n = 16 * Math.random() | 0;
                  return ("x" === e ? n : 3 & n | 8).toString(16)
              })), n.hostType = e => {
                  if (e) return -1 !== (e = u.parse(e, "host")) ? e.host_type : void 0
              };
              const i = n.escapeUser = e => encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi, ":").replace(/%2B/gi, "+").replace(/%3F/gi, "?").replace(/%2F/gi, "/");
              n.normalizeTarget = (e, n) => {
                  if (e) {
                      if (e instanceof r) return e;
                      if ("string" == typeof e) {
                          const t = e.split("@");
                          let u, s, o;
                          switch (t.length) {
                              case 1:
                                  if (!n) return;
                                  u = e, s = n;
                                  break;
                              case 2:
                                  u = t[0], s = t[1];
                                  break;
                              default:
                                  u = t.slice(0, t.length - 1).join("@"), s = t[t.length - 1]
                          }
                          return u = u.replace(/^(sips?|tel):/i, ""), /^[-.()]*\+?[0-9\-.()]+$/.test(u) && (u = u.replace(/[-.()]/g, "")), e = `${l.SIP}:${i(u)}@${s}`, (o = r.parse(e)) ? o : void 0
                      }
                  }
              }, n.headerize = e => {
                  const n = {
                          "Call-Id": "Call-ID",
                          Cseq: "CSeq",
                          "Www-Authenticate": "WWW-Authenticate"
                      },
                      t = e.toLowerCase().replace(/_/g, "-").split("-");
                  let l = "";
                  const r = t.length;
                  let u;
                  for (u = 0; u < r; u++) 0 !== u && (l += "-"), l += t[u].charAt(0).toUpperCase() + t[u].substring(1);
                  return n[l] && (l = n[l]), l
              }, n.sipErrorCause = e => {
                  for (const n in l.SIP_ERROR_CAUSES)
                      if (-1 !== l.SIP_ERROR_CAUSES[n].indexOf(e)) return l.causes[n];
                  return l.causes.SIP_FAILURE_CODE
              }, n.getRandomTestNetIP = () => `192.0.2.${1,254,Math.floor(254*Math.random()+1)}`, n.calculateMD5 = e => {
                  function n(e, n) {
                      return e << n | e >>> 32 - n
                  }

                  function t(e, n) {
                      const t = 2147483648 & e,
                          l = 2147483648 & n,
                          r = 1073741824 & e,
                          u = 1073741824 & n,
                          s = (1073741823 & e) + (1073741823 & n);
                      return r & u ? 2147483648 ^ s ^ t ^ l : r | u ? 1073741824 & s ? 3221225472 ^ s ^ t ^ l : 1073741824 ^ s ^ t ^ l : s ^ t ^ l
                  }

                  function l(e, l, r, u, s, o, i) {
                      return e = t(e, t(t(function(e, n, t) {
                          return e & n | ~e & t
                      }(l, r, u), s), i)), t(n(e, o), l)
                  }

                  function r(e, l, r, u, s, o, i) {
                      return e = t(e, t(t(function(e, n, t) {
                          return e & t | n & ~t
                      }(l, r, u), s), i)), t(n(e, o), l)
                  }

                  function u(e, l, r, u, s, o, i) {
                      return e = t(e, t(t(function(e, n, t) {
                          return e ^ n ^ t
                      }(l, r, u), s), i)), t(n(e, o), l)
                  }

                  function s(e, l, r, u, s, o, i) {
                      return e = t(e, t(t(function(e, n, t) {
                          return n ^ (e | ~t)
                      }(l, r, u), s), i)), t(n(e, o), l)
                  }

                  function o(e) {
                      let n, t, l = "",
                          r = "";
                      for (t = 0; t <= 3; t++) n = e >>> 8 * t & 255, r = `0${n.toString(16)}`, l += r.substr(r.length - 2, 2);
                      return l
                  }
                  let i, a, c, h, d, f, _, p, m, v = [];
                  for (e = function(e) {
                          e = e.replace(/\r\n/g, "\n");
                          let n = "";
                          for (let t = 0; t < e.length; t++) {
                              const l = e.charCodeAt(t);
                              l < 128 ? n += String.fromCharCode(l) : l > 127 && l < 2048 ? (n += String.fromCharCode(l >> 6 | 192), n += String.fromCharCode(63 & l | 128)) : (n += String.fromCharCode(l >> 12 | 224), n += String.fromCharCode(l >> 6 & 63 | 128), n += String.fromCharCode(63 & l | 128))
                          }
                          return n
                      }(e), v = function(e) {
                          let n;
                          const t = e.length,
                              l = t + 8,
                              r = 16 * ((l - l % 64) / 64 + 1),
                              u = new Array(r - 1);
                          let s = 0,
                              o = 0;
                          for (; o < t;) n = (o - o % 4) / 4, s = o % 4 * 8, u[n] = u[n] | e.charCodeAt(o) << s, o++;
                          return n = (o - o % 4) / 4, s = o % 4 * 8, u[n] = u[n] | 128 << s, u[r - 2] = t << 3, u[r - 1] = t >>> 29, u
                      }(e), f = 1732584193, _ = 4023233417, p = 2562383102, m = 271733878, i = 0; i < v.length; i += 16) a = f, c = _, h = p, d = m, f = l(f, _, p, m, v[i + 0], 7, 3614090360), m = l(m, f, _, p, v[i + 1], 12, 3905402710), p = l(p, m, f, _, v[i + 2], 17, 606105819), _ = l(_, p, m, f, v[i + 3], 22, 3250441966), f = l(f, _, p, m, v[i + 4], 7, 4118548399), m = l(m, f, _, p, v[i + 5], 12, 1200080426), p = l(p, m, f, _, v[i + 6], 17, 2821735955), _ = l(_, p, m, f, v[i + 7], 22, 4249261313), f = l(f, _, p, m, v[i + 8], 7, 1770035416), m = l(m, f, _, p, v[i + 9], 12, 2336552879), p = l(p, m, f, _, v[i + 10], 17, 4294925233), _ = l(_, p, m, f, v[i + 11], 22, 2304563134), f = l(f, _, p, m, v[i + 12], 7, 1804603682), m = l(m, f, _, p, v[i + 13], 12, 4254626195), p = l(p, m, f, _, v[i + 14], 17, 2792965006), _ = l(_, p, m, f, v[i + 15], 22, 1236535329), f = r(f, _, p, m, v[i + 1], 5, 4129170786), m = r(m, f, _, p, v[i + 6], 9, 3225465664), p = r(p, m, f, _, v[i + 11], 14, 643717713), _ = r(_, p, m, f, v[i + 0], 20, 3921069994), f = r(f, _, p, m, v[i + 5], 5, 3593408605), m = r(m, f, _, p, v[i + 10], 9, 38016083), p = r(p, m, f, _, v[i + 15], 14, 3634488961), _ = r(_, p, m, f, v[i + 4], 20, 3889429448), f = r(f, _, p, m, v[i + 9], 5, 568446438), m = r(m, f, _, p, v[i + 14], 9, 3275163606), p = r(p, m, f, _, v[i + 3], 14, 4107603335), _ = r(_, p, m, f, v[i + 8], 20, 1163531501), f = r(f, _, p, m, v[i + 13], 5, 2850285829), m = r(m, f, _, p, v[i + 2], 9, 4243563512), p = r(p, m, f, _, v[i + 7], 14, 1735328473), _ = r(_, p, m, f, v[i + 12], 20, 2368359562), f = u(f, _, p, m, v[i + 5], 4, 4294588738), m = u(m, f, _, p, v[i + 8], 11, 2272392833), p = u(p, m, f, _, v[i + 11], 16, 1839030562), _ = u(_, p, m, f, v[i + 14], 23, 4259657740), f = u(f, _, p, m, v[i + 1], 4, 2763975236), m = u(m, f, _, p, v[i + 4], 11, 1272893353), p = u(p, m, f, _, v[i + 7], 16, 4139469664), _ = u(_, p, m, f, v[i + 10], 23, 3200236656), f = u(f, _, p, m, v[i + 13], 4, 681279174), m = u(m, f, _, p, v[i + 0], 11, 3936430074), p = u(p, m, f, _, v[i + 3], 16, 3572445317), _ = u(_, p, m, f, v[i + 6], 23, 76029189), f = u(f, _, p, m, v[i + 9], 4, 3654602809), m = u(m, f, _, p, v[i + 12], 11, 3873151461), p = u(p, m, f, _, v[i + 15], 16, 530742520), _ = u(_, p, m, f, v[i + 2], 23, 3299628645), f = s(f, _, p, m, v[i + 0], 6, 4096336452), m = s(m, f, _, p, v[i + 7], 10, 1126891415), p = s(p, m, f, _, v[i + 14], 15, 2878612391), _ = s(_, p, m, f, v[i + 5], 21, 4237533241), f = s(f, _, p, m, v[i + 12], 6, 1700485571), m = s(m, f, _, p, v[i + 3], 10, 2399980690), p = s(p, m, f, _, v[i + 10], 15, 4293915773), _ = s(_, p, m, f, v[i + 1], 21, 2240044497), f = s(f, _, p, m, v[i + 8], 6, 1873313359), m = s(m, f, _, p, v[i + 15], 10, 4264355552), p = s(p, m, f, _, v[i + 6], 15, 2734768916), _ = s(_, p, m, f, v[i + 13], 21, 1309151649), f = s(f, _, p, m, v[i + 4], 6, 4149444226), m = s(m, f, _, p, v[i + 11], 10, 3174756917), p = s(p, m, f, _, v[i + 2], 15, 718787259), _ = s(_, p, m, f, v[i + 9], 21, 3951481745), f = t(f, a), _ = t(_, c), p = t(p, h), m = t(m, d);
                  return (o(f) + o(_) + o(p) + o(m)).toLowerCase()
              }, n.closeMediaStream = e => {
                  if (e) try {
                      let n;
                      if (e.getTracks) {
                          n = e.getTracks();
                          for (const e of n) e.stop()
                      } else {
                          n = e.getAudioTracks();
                          for (const e of n) e.stop();
                          n = e.getVideoTracks();
                          for (const e of n) e.stop()
                      }
                  } catch (n) {
                      "function" != typeof e.stop && "object" != typeof e.stop || e.stop()
                  }
              }, n.cloneArray = e => e && e.slice() || [], n.cloneObject = (e, n = {}) => e && Object.assign({}, e) || n
          },
          272: (e, n, t) => {
              n.formatArgs = function(n) {
                  if (n[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + n[0] + (this.useColors ? "%c " : " ") + "+" + e.exports.humanize(this.diff), !this.useColors) return;
                  const t = "color: " + this.color;
                  n.splice(1, 0, t, "color: inherit");
                  let l = 0,
                      r = 0;
                  n[0].replace(/%[a-zA-Z%]/g, (e => {
                      "%%" !== e && (l++, "%c" === e && (r = l))
                  })), n.splice(r, 0, t)
              }, n.save = function(e) {
                  try {
                      e ? n.storage.setItem("debug", e) : n.storage.removeItem("debug")
                  } catch (e) {}
              }, n.load = function() {
                  let e;
                  try {
                      e = n.storage.getItem("debug")
                  } catch (e) {}
                  return !e && "undefined" != typeof process && "env" in process && (e = process.env.DEBUG), e
              }, n.useColors = function() {
                  return !("undefined" == typeof window || !window.process || "renderer" !== window.process.type && !window.process.__nwjs) || ("undefined" == typeof navigator || !navigator.userAgent || !navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) && ("undefined" != typeof document && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || "undefined" != typeof window && window.console && (window.console.firebug || window.console.exception && window.console.table) || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))
              }, n.storage = function() {
                  try {
                      return localStorage
                  } catch (e) {}
              }(), n.destroy = (() => {
                  let e = !1;
                  return () => {
                      e || (e = !0, console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))
                  }
              })(), n.colors = ["#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33"], n.log = console.debug || console.log || (() => {}), e.exports = t(669)(n);
              const {
                  formatters: l
              } = e.exports;
              l.j = function(e) {
                  try {
                      return JSON.stringify(e)
                  } catch (e) {
                      return "[UnexpectedJSONParseError]: " + e.message
                  }
              }
          },
          669: (e, n, t) => {
              e.exports = function(e) {
                  function n(e) {
                      let t, r, u, s = null;

                      function o(...e) {
                          if (!o.enabled) return;
                          const l = o,
                              r = Number(new Date),
                              u = r - (t || r);
                          l.diff = u, l.prev = t, l.curr = r, t = r, e[0] = n.coerce(e[0]), "string" != typeof e[0] && e.unshift("%O");
                          let s = 0;
                          e[0] = e[0].replace(/%([a-zA-Z%])/g, ((t, r) => {
                              if ("%%" === t) return "%";
                              s++;
                              const u = n.formatters[r];
                              if ("function" == typeof u) {
                                  const n = e[s];
                                  t = u.call(l, n), e.splice(s, 1), s--
                              }
                              return t
                          })), n.formatArgs.call(l, e), (l.log || n.log).apply(l, e)
                      }
                      return o.namespace = e, o.useColors = n.useColors(), o.color = n.selectColor(e), o.extend = l, o.destroy = n.destroy, Object.defineProperty(o, "enabled", {
                          enumerable: !0,
                          configurable: !1,
                          get: () => null !== s ? s : (r !== n.namespaces && (r = n.namespaces, u = n.enabled(e)), u),
                          set: e => {
                              s = e
                          }
                      }), "function" == typeof n.init && n.init(o), o
                  }

                  function l(e, t) {
                      const l = n(this.namespace + (void 0 === t ? ":" : t) + e);
                      return l.log = this.log, l
                  }

                  function r(e) {
                      return e.toString().substring(2, e.toString().length - 2).replace(/\.\*\?$/, "*")
                  }
                  return n.debug = n, n.default = n, n.coerce = function(e) {
                      return e instanceof Error ? e.stack || e.message : e
                  }, n.disable = function() {
                      const e = [...n.names.map(r), ...n.skips.map(r).map((e => "-" + e))].join(",");
                      return n.enable(""), e
                  }, n.enable = function(e) {
                      let t;
                      n.save(e), n.namespaces = e, n.names = [], n.skips = [];
                      const l = ("string" == typeof e ? e : "").split(/[\s,]+/),
                          r = l.length;
                      for (t = 0; t < r; t++) l[t] && ("-" === (e = l[t].replace(/\*/g, ".*?"))[0] ? n.skips.push(new RegExp("^" + e.substr(1) + "$")) : n.names.push(new RegExp("^" + e + "$")))
                  }, n.enabled = function(e) {
                      if ("*" === e[e.length - 1]) return !0;
                      let t, l;
                      for (t = 0, l = n.skips.length; t < l; t++)
                          if (n.skips[t].test(e)) return !1;
                      for (t = 0, l = n.names.length; t < l; t++)
                          if (n.names[t].test(e)) return !0;
                      return !1
                  }, n.humanize = t(797), n.destroy = function() {
                      console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")
                  }, Object.keys(e).forEach((t => {
                      n[t] = e[t]
                  })), n.names = [], n.skips = [], n.formatters = {}, n.selectColor = function(e) {
                      let t = 0;
                      for (let n = 0; n < e.length; n++) t = (t << 5) - t + e.charCodeAt(n), t |= 0;
                      return n.colors[Math.abs(t) % n.colors.length]
                  }, n.enable(n.load()), n
              }
          },
          797: e => {
              var n = 1e3,
                  t = 60 * n,
                  l = 60 * t,
                  r = 24 * l;

              function u(e, n, t, l) {
                  var r = n >= 1.5 * t;
                  return Math.round(e / t) + " " + l + (r ? "s" : "")
              }
              e.exports = function(e, s) {
                  s = s || {};
                  var o, i, a = typeof e;
                  if ("string" === a && e.length > 0) return function(e) {
                      if (!((e = String(e)).length > 100)) {
                          var u = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);
                          if (u) {
                              var s = parseFloat(u[1]);
                              switch ((u[2] || "ms").toLowerCase()) {
                                  case "years":
                                  case "year":
                                  case "yrs":
                                  case "yr":
                                  case "y":
                                      return 315576e5 * s;
                                  case "weeks":
                                  case "week":
                                  case "w":
                                      return 6048e5 * s;
                                  case "days":
                                  case "day":
                                  case "d":
                                      return s * r;
                                  case "hours":
                                  case "hour":
                                  case "hrs":
                                  case "hr":
                                  case "h":
                                      return s * l;
                                  case "minutes":
                                  case "minute":
                                  case "mins":
                                  case "min":
                                  case "m":
                                      return s * t;
                                  case "seconds":
                                  case "second":
                                  case "secs":
                                  case "sec":
                                  case "s":
                                      return s * n;
                                  case "milliseconds":
                                  case "millisecond":
                                  case "msecs":
                                  case "msec":
                                  case "ms":
                                      return s;
                                  default:
                                      return
                              }
                          }
                      }
                  }(e);
                  if ("number" === a && isFinite(e)) return s.long ? (o = e, (i = Math.abs(o)) >= r ? u(o, i, r, "day") : i >= l ? u(o, i, l, "hour") : i >= t ? u(o, i, t, "minute") : i >= n ? u(o, i, n, "second") : o + " ms") : function(e) {
                      var u = Math.abs(e);
                      return u >= r ? Math.round(e / r) + "d" : u >= l ? Math.round(e / l) + "h" : u >= t ? Math.round(e / t) + "m" : u >= n ? Math.round(e / n) + "s" : e + "ms"
                  }(e);
                  throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e))
              }
          },
          692: e => {
              var n = e.exports = {
                  v: [{
                      name: "version",
                      reg: /^(\d*)$/
                  }],
                  o: [{
                      name: "origin",
                      reg: /^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,
                      names: ["username", "sessionId", "sessionVersion", "netType", "ipVer", "address"],
                      format: "%s %s %d %s IP%d %s"
                  }],
                  s: [{
                      name: "name"
                  }],
                  i: [{
                      name: "description"
                  }],
                  u: [{
                      name: "uri"
                  }],
                  e: [{
                      name: "email"
                  }],
                  p: [{
                      name: "phone"
                  }],
                  z: [{
                      name: "timezones"
                  }],
                  r: [{
                      name: "repeats"
                  }],
                  t: [{
                      name: "timing",
                      reg: /^(\d*) (\d*)/,
                      names: ["start", "stop"],
                      format: "%d %d"
                  }],
                  c: [{
                      name: "connection",
                      reg: /^IN IP(\d) (\S*)/,
                      names: ["version", "ip"],
                      format: "IN IP%d %s"
                  }],
                  b: [{
                      push: "bandwidth",
                      reg: /^(TIAS|AS|CT|RR|RS):(\d*)/,
                      names: ["type", "limit"],
                      format: "%s:%s"
                  }],
                  m: [{
                      reg: /^(\w*) (\d*) ([\w/]*)(?: (.*))?/,
                      names: ["type", "port", "protocol", "payloads"],
                      format: "%s %d %s %s"
                  }],
                  a: [{
                      push: "rtp",
                      reg: /^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,
                      names: ["payload", "codec", "rate", "encoding"],
                      format: function(e) {
                          return e.encoding ? "rtpmap:%d %s/%s/%s" : e.rate ? "rtpmap:%d %s/%s" : "rtpmap:%d %s"
                      }
                  }, {
                      push: "fmtp",
                      reg: /^fmtp:(\d*) ([\S| ]*)/,
                      names: ["payload", "config"],
                      format: "fmtp:%d %s"
                  }, {
                      name: "control",
                      reg: /^control:(.*)/,
                      format: "control:%s"
                  }, {
                      name: "rtcp",
                      reg: /^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,
                      names: ["port", "netType", "ipVer", "address"],
                      format: function(e) {
                          return null != e.address ? "rtcp:%d %s IP%d %s" : "rtcp:%d"
                      }
                  }, {
                      push: "rtcpFbTrrInt",
                      reg: /^rtcp-fb:(\*|\d*) trr-int (\d*)/,
                      names: ["payload", "value"],
                      format: "rtcp-fb:%s trr-int %d"
                  }, {
                      push: "rtcpFb",
                      reg: /^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,
                      names: ["payload", "type", "subtype"],
                      format: function(e) {
                          return null != e.subtype ? "rtcp-fb:%s %s %s" : "rtcp-fb:%s %s"
                      }
                  }, {
                      push: "ext",
                      reg: /^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,
                      names: ["value", "direction", "encrypt-uri", "uri", "config"],
                      format: function(e) {
                          return "extmap:%d" + (e.direction ? "/%s" : "%v") + (e["encrypt-uri"] ? " %s" : "%v") + " %s" + (e.config ? " %s" : "")
                      }
                  }, {
                      name: "extmapAllowMixed",
                      reg: /^(extmap-allow-mixed)/
                  }, {
                      push: "crypto",
                      reg: /^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,
                      names: ["id", "suite", "config", "sessionConfig"],
                      format: function(e) {
                          return null != e.sessionConfig ? "crypto:%d %s %s %s" : "crypto:%d %s %s"
                      }
                  }, {
                      name: "setup",
                      reg: /^setup:(\w*)/,
                      format: "setup:%s"
                  }, {
                      name: "connectionType",
                      reg: /^connection:(new|existing)/,
                      format: "connection:%s"
                  }, {
                      name: "mid",
                      reg: /^mid:([^\s]*)/,
                      format: "mid:%s"
                  }, {
                      name: "msid",
                      reg: /^msid:(.*)/,
                      format: "msid:%s"
                  }, {
                      name: "ptime",
                      reg: /^ptime:(\d*(?:\.\d*)*)/,
                      format: "ptime:%d"
                  }, {
                      name: "maxptime",
                      reg: /^maxptime:(\d*(?:\.\d*)*)/,
                      format: "maxptime:%d"
                  }, {
                      name: "direction",
                      reg: /^(sendrecv|recvonly|sendonly|inactive)/
                  }, {
                      name: "icelite",
                      reg: /^(ice-lite)/
                  }, {
                      name: "iceUfrag",
                      reg: /^ice-ufrag:(\S*)/,
                      format: "ice-ufrag:%s"
                  }, {
                      name: "icePwd",
                      reg: /^ice-pwd:(\S*)/,
                      format: "ice-pwd:%s"
                  }, {
                      name: "fingerprint",
                      reg: /^fingerprint:(\S*) (\S*)/,
                      names: ["type", "hash"],
                      format: "fingerprint:%s %s"
                  }, {
                      push: "candidates",
                      reg: /^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,
                      names: ["foundation", "component", "transport", "priority", "ip", "port", "type", "raddr", "rport", "tcptype", "generation", "network-id", "network-cost"],
                      format: function(e) {
                          var n = "candidate:%s %d %s %d %s %d typ %s";
                          return n += null != e.raddr ? " raddr %s rport %d" : "%v%v", n += null != e.tcptype ? " tcptype %s" : "%v", null != e.generation && (n += " generation %d"), (n += null != e["network-id"] ? " network-id %d" : "%v") + (null != e["network-cost"] ? " network-cost %d" : "%v")
                      }
                  }, {
                      name: "endOfCandidates",
                      reg: /^(end-of-candidates)/
                  }, {
                      name: "remoteCandidates",
                      reg: /^remote-candidates:(.*)/,
                      format: "remote-candidates:%s"
                  }, {
                      name: "iceOptions",
                      reg: /^ice-options:(\S*)/,
                      format: "ice-options:%s"
                  }, {
                      push: "ssrcs",
                      reg: /^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,
                      names: ["id", "attribute", "value"],
                      format: function(e) {
                          var n = "ssrc:%d";
                          return null != e.attribute && (n += " %s", null != e.value && (n += ":%s")), n
                      }
                  }, {
                      push: "ssrcGroups",
                      reg: /^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,
                      names: ["semantics", "ssrcs"],
                      format: "ssrc-group:%s %s"
                  }, {
                      name: "msidSemantic",
                      reg: /^msid-semantic:\s?(\w*) (\S*)/,
                      names: ["semantic", "token"],
                      format: "msid-semantic: %s %s"
                  }, {
                      push: "groups",
                      reg: /^group:(\w*) (.*)/,
                      names: ["type", "mids"],
                      format: "group:%s %s"
                  }, {
                      name: "rtcpMux",
                      reg: /^(rtcp-mux)/
                  }, {
                      name: "rtcpRsize",
                      reg: /^(rtcp-rsize)/
                  }, {
                      name: "sctpmap",
                      reg: /^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,
                      names: ["sctpmapNumber", "app", "maxMessageSize"],
                      format: function(e) {
                          return null != e.maxMessageSize ? "sctpmap:%s %s %s" : "sctpmap:%s %s"
                      }
                  }, {
                      name: "xGoogleFlag",
                      reg: /^x-google-flag:([^\s]*)/,
                      format: "x-google-flag:%s"
                  }, {
                      push: "rids",
                      reg: /^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,
                      names: ["id", "direction", "params"],
                      format: function(e) {
                          return e.params ? "rid:%s %s %s" : "rid:%s %s"
                      }
                  }, {
                      push: "imageattrs",
                      reg: new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),
                      names: ["pt", "dir1", "attrs1", "dir2", "attrs2"],
                      format: function(e) {
                          return "imageattr:%s %s %s" + (e.dir2 ? " %s %s" : "")
                      }
                  }, {
                      name: "simulcast",
                      reg: new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),
                      names: ["dir1", "list1", "dir2", "list2"],
                      format: function(e) {
                          return "simulcast:%s %s" + (e.dir2 ? " %s %s" : "")
                      }
                  }, {
                      name: "simulcast_03",
                      reg: /^simulcast:[\s\t]+([\S+\s\t]+)$/,
                      names: ["value"],
                      format: "simulcast: %s"
                  }, {
                      name: "framerate",
                      reg: /^framerate:(\d+(?:$|\.\d+))/,
                      format: "framerate:%s"
                  }, {
                      name: "sourceFilter",
                      reg: /^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,
                      names: ["filterMode", "netType", "addressTypes", "destAddress", "srcList"],
                      format: "source-filter: %s %s %s %s %s"
                  }, {
                      name: "bundleOnly",
                      reg: /^(bundle-only)/
                  }, {
                      name: "label",
                      reg: /^label:(.+)/,
                      format: "label:%s"
                  }, {
                      name: "sctpPort",
                      reg: /^sctp-port:(\d+)$/,
                      format: "sctp-port:%s"
                  }, {
                      name: "maxMessageSize",
                      reg: /^max-message-size:(\d+)$/,
                      format: "max-message-size:%s"
                  }, {
                      push: "tsRefClocks",
                      reg: /^ts-refclk:([^\s=]*)(?:=(\S*))?/,
                      names: ["clksrc", "clksrcExt"],
                      format: function(e) {
                          return "ts-refclk:%s" + (null != e.clksrcExt ? "=%s" : "")
                      }
                  }, {
                      name: "mediaClk",
                      reg: /^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,
                      names: ["id", "mediaClockName", "mediaClockValue", "rateNumerator", "rateDenominator"],
                      format: function(e) {
                          var n = "mediaclk:";
                          return n += null != e.id ? "id=%s %s" : "%v%s", n += null != e.mediaClockValue ? "=%s" : "", (n += null != e.rateNumerator ? " rate=%s" : "") + (null != e.rateDenominator ? "/%s" : "")
                      }
                  }, {
                      name: "keywords",
                      reg: /^keywds:(.+)$/,
                      format: "keywds:%s"
                  }, {
                      name: "content",
                      reg: /^content:(.+)/,
                      format: "content:%s"
                  }, {
                      name: "bfcpFloorCtrl",
                      reg: /^floorctrl:(c-only|s-only|c-s)/,
                      format: "floorctrl:%s"
                  }, {
                      name: "bfcpConfId",
                      reg: /^confid:(\d+)/,
                      format: "confid:%s"
                  }, {
                      name: "bfcpUserId",
                      reg: /^userid:(\d+)/,
                      format: "userid:%s"
                  }, {
                      name: "bfcpFloorId",
                      reg: /^floorid:(.+) (?:m-stream|mstrm):(.+)/,
                      names: ["id", "mStream"],
                      format: "floorid:%s mstrm:%s"
                  }, {
                      push: "invalid",
                      names: ["value"]
                  }]
              };
              Object.keys(n).forEach((function(e) {
                  n[e].forEach((function(e) {
                      e.reg || (e.reg = /(.*)/), e.format || (e.format = "%s")
                  }))
              }))
          },
          766: (e, n, t) => {
              var l = t(962),
                  r = t(776);
              n.write = r, n.parse = l.parse, n.parseParams = l.parseParams, n.parseFmtpConfig = l.parseFmtpConfig, n.parsePayloads = l.parsePayloads, n.parseRemoteCandidates = l.parseRemoteCandidates, n.parseImageAttributes = l.parseImageAttributes, n.parseSimulcastStreamList = l.parseSimulcastStreamList
          },
          962: (e, n, t) => {
              var l = function(e) {
                      return String(Number(e)) === e ? Number(e) : e
                  },
                  r = function(e, n, t) {
                      var r = e.name && e.names;
                      e.push && !n[e.push] ? n[e.push] = [] : r && !n[e.name] && (n[e.name] = {});
                      var u = e.push ? {} : r ? n[e.name] : n;
                      ! function(e, n, t, r) {
                          if (r && !t) n[r] = l(e[1]);
                          else
                              for (var u = 0; u < t.length; u += 1) null != e[u + 1] && (n[t[u]] = l(e[u + 1]))
                      }(t.match(e.reg), u, e.names, e.name), e.push && n[e.push].push(u)
                  },
                  u = t(692),
                  s = RegExp.prototype.test.bind(/^([a-z])=(.*)/);
              n.parse = function(e) {
                  var n = {},
                      t = [],
                      l = n;
                  return e.split(/(\r\n|\r|\n)/).filter(s).forEach((function(e) {
                      var n = e[0],
                          s = e.slice(2);
                      "m" === n && (t.push({
                          rtp: [],
                          fmtp: []
                      }), l = t[t.length - 1]);
                      for (var o = 0; o < (u[n] || []).length; o += 1) {
                          var i = u[n][o];
                          if (i.reg.test(s)) return r(i, l, s)
                      }
                  })), n.media = t, n
              };
              var o = function(e, n) {
                  var t = n.split(/=(.+)/, 2);
                  return 2 === t.length ? e[t[0]] = l(t[1]) : 1 === t.length && n.length > 1 && (e[t[0]] = void 0), e
              };
              n.parseParams = function(e) {
                  return e.split(/;\s?/).reduce(o, {})
              }, n.parseFmtpConfig = n.parseParams, n.parsePayloads = function(e) {
                  return e.toString().split(" ").map(Number)
              }, n.parseRemoteCandidates = function(e) {
                  for (var n = [], t = e.split(" ").map(l), r = 0; r < t.length; r += 3) n.push({
                      component: t[r],
                      ip: t[r + 1],
                      port: t[r + 2]
                  });
                  return n
              }, n.parseImageAttributes = function(e) {
                  return e.split(" ").map((function(e) {
                      return e.substring(1, e.length - 1).split(",").reduce(o, {})
                  }))
              }, n.parseSimulcastStreamList = function(e) {
                  return e.split(";").map((function(e) {
                      return e.split(",").map((function(e) {
                          var n, t = !1;
                          return "~" !== e[0] ? n = l(e) : (n = l(e.substring(1, e.length)), t = !0), {
                              scid: n,
                              paused: t
                          }
                      }))
                  }))
              }
          },
          776: (e, n, t) => {
              var l = t(692),
                  r = /%[sdv%]/g,
                  u = function(e) {
                      var n = 1,
                          t = arguments,
                          l = t.length;
                      return e.replace(r, (function(e) {
                          if (n >= l) return e;
                          var r = t[n];
                          switch (n += 1, e) {
                              case "%%":
                                  return "%";
                              case "%s":
                                  return String(r);
                              case "%d":
                                  return Number(r);
                              case "%v":
                                  return ""
                          }
                      }))
                  },
                  s = function(e, n, t) {
                      var l = [e + "=" + (n.format instanceof Function ? n.format(n.push ? t : t[n.name]) : n.format)];
                      if (n.names)
                          for (var r = 0; r < n.names.length; r += 1) {
                              var s = n.names[r];
                              n.name ? l.push(t[n.name][s]) : l.push(t[n.names[r]])
                          } else l.push(t[n.name]);
                      return u.apply(null, l)
                  },
                  o = ["v", "o", "s", "i", "u", "e", "p", "c", "b", "t", "r", "z", "a"],
                  i = ["i", "c", "b", "a"];
              e.exports = function(e, n) {
                  n = n || {}, null == e.version && (e.version = 0), null == e.name && (e.name = " "), e.media.forEach((function(e) {
                      null == e.payloads && (e.payloads = "")
                  }));
                  var t = n.outerOrder || o,
                      r = n.innerOrder || i,
                      u = [];
                  return t.forEach((function(n) {
                      l[n].forEach((function(t) {
                          t.name in e && null != e[t.name] ? u.push(s(n, t, e)) : t.push in e && null != e[t.push] && e[t.push].forEach((function(e) {
                              u.push(s(n, t, e))
                          }))
                      }))
                  })), e.media.forEach((function(e) {
                      u.push(s("m", l.m[0], e)), r.forEach((function(n) {
                          l[n].forEach((function(t) {
                              t.name in e && null != e[t.name] ? u.push(s(n, t, e)) : t.push in e && null != e[t.push] && e[t.push].forEach((function(e) {
                                  u.push(s(n, t, e))
                              }))
                          }))
                      }))
                  })), u.join("\r\n") + "\r\n"
              }
          },
          225: (e, n, t) => {
              var l = t(979);
              const {
                  newUUID: r
              } = t(142), u = "ERROR", s = "IN_CALL", o = "CALL_END";
              const i = document.createElement("audio");
              i.autoplay = !0;
              const a = {
                      audio: !0,
                      video: !1
                  },
                  c = e => {
                      e.onaddstream = e => {
                          let n = e.stream;
                          n.active && (i.srcObject = n)
                      }
                  };
              let h, d, f, _, p, m, v, g, y, C = {
                      peerconnection: e => {
                          let n = e.peerconnection;
                          c(n)
                      }
                  },
                  T = !1;
              const A = () => {
                  f = null, _ = null, p = null, m = null, g = null, y = null
              };
              let b;
              const E = (e, n) => {
                      b(e, n)
                  },
                  S = () => {
                      if (!p || !p.isEstablished()) {
                          let e = "当前通话不存在或已销毁，无法执行该操作。";
                          return console.error(e), E(u, {
                              msg: e
                          }), !1
                      }
                      return !0
                  };
              e.exports = {
                  initSDK: e => {
                      let n = e.host,
                          t = e.port,
                          r = e.proto ? "wss" : "ws",
                          u = e.extNo,
                          i = e.extPwd;
                      null !== e.stateEventListener && (b = e.stateEventListener), T = e.autoRegister, e.checkMic && navigator.mediaDevices.getUserMedia({
                          video: !1,
                          audio: !0
                      }).then((e => {
                          e.getTracks().forEach((e => {
                              e.stop()
                          }))
                      })).catch((e => {
                          console.error("麦克风检测异常！！请检查麦克风"), E("MICERROR", {
                              msg: "麦克风检测异常！！请检查麦克风"
                          })
                      })), e.debug ? l.debug.enable("JsSIP:*") : l.debug.disable(), v = u;
                      let a = r + "://" + n + ":" + t;
                      d = new l.WebSocketInterface(a);
                      var f = {
                          sockets: [d],
                          uri: "sip:" + u + "@" + e.realm,
                          password: i,
                          register: !1,
                          register_expires: 300,
                          user_agent: "JsSIP",
													extraHeaders: ['rel100: SIP.C.supported.REQUIRED']
                      };
                      h = new l.UA(f), h.on("connected", (e => {
                          E("CONNECTED", {
                              localAgent: v
                          }), T && h.register()
                      })), h.on("disconnected", (e => {
                          E("DISCONNECTED")
                      })), h.on("registered", (e => {
                          E("REGISTERED")
                      })), h.on("unregistered", (e => {
                          E("UNREGISTERED")
                      })), h.on("registrationFailed", (e => {
                          console.error(e);
                          let n = "注册失败,请检查账号密码是否正确。" + e.cause;
                          E("REGISTER_FAILED", {
                              msg: n
                          })
                      })), h.on("registrationExpiring", (e => {
                          h.register()
                      })), h.on("newRTCSession", (e => {
                          console.info("on new rtcsession: ", e);
                          let n, t = e.session;
                          "remote" === e.originator ? (_ = e.session, p = _, m = "inbound", g = t.remote_identity.display_name, n = "INCOMING_CALL") : (m = "outbound", n = "OUTGOING_CALL"), t.on("progress", (e => {
                              E(n, {
                                  direction: m,
                                  otherLegNumber: g,
                                  callId: y
                              })
                          })), t.on("accepted", (e => {
                              E(s)
                          })), t.on("ended", (e => {
                              A(), E(o)
                          })), t.on("failed", (e => {
                              A(), E(o)
                          })), t.on("hold", (e => {
                              E("HOLD")
                          })), t.on("unhold", (e => {
                              E(s)
                          })), t.on("peerconnection", (e => {
                              c(e.peerconnection)
                          }));
                          let l = 0;
                          t.on("icecandidate", (e => {
                              l++ > 4 && e.ready()
                          }))
                      })), h.start()
                  },
                  cleanSDK: () => {
                      T = !1, f = null, _ = null, p = null, h.stop()
                  },
                  register: () => {
                      if (h.isConnected) h.register();
                      else {
                          let e = "websocket尚未连接，请先连接ws服务器.";
                          console.error(e), E(u, {
                              msg: e
                          })
                      }
                  },
                  unregister: () => {
                      if (h && h.isConnected && h.isRegistered()) h.unregister({
                          all: !0
                      });
                      else {
                          let e = "尚未注册，操作禁止.";
                          console.error(e), E(u, {
                              msg: e
                          })
                      }
                  },
                  makecall: (e,callId) => {
                      if (y = r(), h && h.isRegistered()) f = h.call(e, {
                          eventHandlers: C,
                          mediaConstraints: a,
                          mediaStream: null,
                          extraHeaders: ["X-JCallId: " + callId],
                          sessionTimersExpires: 120,
                          pcConfig: {
                              iceServers: [
                                { urls: "stun:stun1.ketianyun.com:3478" }
                              ]
                          }
                      }), p = f, g = e;
                      else {
                          let e = "请在注册成功后再发起外呼请求.";
                          console.error(e), E(u, {
                              msg: e
                          })
                      }
                  },
                  hangup: () => {
                      if (p && !p.isEnded()) p.terminate();
                      else {
                          let e = "当前通话不存在，无法执行挂断操作。";
                          console.log(e), E(u, {
                              msg: e
                          })
                      }
                  },
                  answer: () => {
                      p && p.isInProgress() ? p.answer({
                          mediaConstraints: a
                      }) : E(u, {
                          msg: "非法操作，通话尚未建立或状态不正确，请勿操作."
                      })
                  },
                  hold: () => {
                      S() && p.hold()
                  },
                  unhold: () => {
                      S() && p.isOnHold() && p.unhold()
                  },
				  mute: () => {
				      S() && p.mute()
				  },
				  unmute: () => {
					  S() && p.unmute()
				  },
                  transfer: e => {
                      S() && p.refer(e)
                  }
              }
          },
          403: e => {
              "use strict";
              e.exports = JSON.parse('{"_from":"jssip@^3.9.0","_id":"jssip@3.9.0","_inBundle":false,"_integrity":"sha512-u9kp82JprKN2bF4j+YXRdGj9VQxTkNdmLjDfiXu+dAF5IalFZTPbAgf5SnrxlIi/0KZHpDxN4yEhhvrB3JxURQ==","_location":"/jssip","_phantomChildren":{},"_requested":{"type":"range","registry":true,"raw":"jssip@^3.9.0","name":"jssip","escapedName":"jssip","rawSpec":"^3.9.0","saveSpec":null,"fetchSpec":"^3.9.0"},"_requiredBy":["/"],"_resolved":"https://registry.npmjs.org/jssip/-/jssip-3.9.0.tgz","_shasum":"aa3e789a6f7d3a83a795dd8e21143046eb307a51","_spec":"jssip@^3.9.0","_where":"D:\\\\code\\\\sdk-jssip","bugs":{"url":"https://github.com/versatica/JsSIP/issues"},"bundleDependencies":false,"contributors":[{"name":"José Luis Millán","email":"jmillan@aliax.net","url":"https://github.com/jmillan"},{"name":"Iñaki Baz Castillo","email":"ibc@aliax.net","url":"https://inakibaz.me"}],"dependencies":{"@types/debug":"^4.1.5","@types/node":"^14.14.34","debug":"^4.3.1","events":"^3.3.0","sdp-transform":"^2.14.1"},"deprecated":false,"description":"the Javascript SIP library","devDependencies":{"@babel/core":"^7.13.10","@babel/preset-env":"^7.13.10","ansi-colors":"^3.2.4","browserify":"^16.5.1","eslint":"^5.16.0","fancy-log":"^1.3.3","gulp":"^4.0.2","gulp-babel":"^8.0.0","gulp-eslint":"^5.0.0","gulp-expect-file":"^1.0.2","gulp-header":"^2.0.9","gulp-nodeunit-runner":"^0.2.2","gulp-plumber":"^1.2.1","gulp-rename":"^1.4.0","gulp-uglify-es":"^1.0.4","pegjs":"^0.7.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0"},"homepage":"https://jssip.net","keywords":["sip","websocket","webrtc","node","browser","library"],"license":"MIT","main":"lib-es5/JsSIP.js","name":"jssip","repository":{"type":"git","url":"git+https://github.com/versatica/JsSIP.git"},"scripts":{"lint":"gulp lint","prepublishOnly":"gulp babel","test":"gulp test"},"title":"JsSIP","types":"lib/JsSIP.d.ts","version":"3.9.0"}')
          }
      }, n = {},
      function t(l) {
          var r = n[l];
          if (void 0 !== r) return r.exports;
          var u = n[l] = {
              exports: {}
          };
          return e[l](u, u.exports, t), u.exports
      }(225);
  var e, n
}));